sapphire-lang 0.7.0

Gradually typed scripting language where every value is an object and types are optional, checked at runtime
Documentation
class ClassTest < Test {
  def test_returns_list {
    class Dog {
      def bark { }
      def sit { }
    }
    names = Dog.instance_method_names
    assert(names.include?("bark"))
    assert(names.include?("sit"))
  }

  def test_excludes_private {
    class Cat {
      def meow { }
      defp secret { }
    }
    names = Cat.instance_method_names
    assert(names.include?("meow"))
    assert(!names.include?("secret"))
  }

  def test_includes_inherited_methods {
    class Animal {
      def breathe { }
    }
    class Fish < Animal {
      def swim { }
    }
    assert(Fish.instance_method_names.include?("swim"))
    assert(Fish.instance_method_names.include?("breathe"))
  }

  def test_sorted {
    class Foo {
      def zzz { }
      def aaa { }
    }
    assert_equal("aaa", Foo.instance_method_names[0])
  }

  def test_returns_list_type {
    class Bar {
      def baz { }
    }
    assert(Bar.instance_method_names.is_a?(List))
  }
}