sapphire-lang 0.8.0

Gradually typed scripting language where every value is an object and types are optional, checked at runtime
Documentation
class MapTest < Test {
  def test_select_keeps_matching_pairs {
    m = { a: 1, b: 2, c: 3 }
    result = m.select { |k, v| v > 1 }
    assert_equal(2, result.size)
    assert(result.has_key?("b"))
    assert(result.has_key?("c"))
  }

  def test_select_empty_when_none_match {
    m = { a: 1, b: 2 }
    result = m.select { |k, v| v > 9 }
    assert_equal(0, result.size)
  }

  def test_select_all_when_all_match {
    m = { a: 1, b: 2 }
    result = m.select { |k, v| v > 0 }
    assert_equal(2, result.size)
  }

  def test_any_true_when_one_pair_matches {
    m = { a: 1, b: 2 }
    assert(m.any? { |k, v| v > 1 })
  }

  def test_any_false_when_no_pair_matches {
    m = { a: 1, b: 2 }
    assert(!m.any? { |k, v| v > 9 })
  }

  def test_any_false_for_empty_map {
    assert(!{}.any? { |k, v| v > 0 })
  }

  def test_all_true_when_all_pairs_match {
    m = { a: 1, b: 2 }
    assert(m.all? { |k, v| v > 0 })
  }

  def test_all_false_when_one_pair_fails {
    m = { a: 1, b: 2 }
    assert(!m.all? { |k, v| v > 1 })
  }

  def test_all_true_for_empty_map {
    assert({}.all? { |k, v| v > 0 })
  }

  def test_all_false_when_one_pair_has_nil {
    m = { a: 1, b: nil }
    assert(!m.all? { |k, v| v })
  }

  def test_none_true_when_no_pair_matches {
    m = { a: 1, b: 2 }
    assert(m.none? { |k, v| v > 9 })
  }

  def test_none_false_when_one_pair_matches {
    m = { a: 1, b: 2 }
    assert(!m.none? { |k, v| v > 1 })
  }

  def test_none_true_for_empty_map {
    assert({}.none? { |k, v| v > 0 })
  }
}