diff options
| author | Amir Rajan <[email protected]> | 2021-04-10 03:51:14 -0500 |
|---|---|---|
| committer | Amir Rajan <[email protected]> | 2021-04-10 03:51:14 -0500 |
| commit | 00e85147c9a1dd35a0857f361e5833a1c25f4a0a (patch) | |
| tree | 52534d292ca3fa5733584eb926116228cb3551af /samples/10_advanced_debugging | |
| parent | a2d92c2bf09bcdc494f1391af69b707cca281a16 (diff) | |
| download | dragonruby-game-toolkit-contrib-00e85147c9a1dd35a0857f361e5833a1c25f4a0a.tar.gz dragonruby-game-toolkit-contrib-00e85147c9a1dd35a0857f361e5833a1c25f4a0a.zip | |
Synced from DRGTK 2.10.
Diffstat (limited to 'samples/10_advanced_debugging')
| -rw-r--r-- | samples/10_advanced_debugging/03_unit_tests/fn_tests.rb | 180 | ||||
| -rw-r--r-- | samples/10_advanced_debugging/03_unit_tests/nil_coercion_tests.rb | 92 |
2 files changed, 272 insertions, 0 deletions
diff --git a/samples/10_advanced_debugging/03_unit_tests/fn_tests.rb b/samples/10_advanced_debugging/03_unit_tests/fn_tests.rb new file mode 100644 index 0000000..206c89e --- /dev/null +++ b/samples/10_advanced_debugging/03_unit_tests/fn_tests.rb @@ -0,0 +1,180 @@ +def infinity + 1 / 0 +end + +def neg_infinity + -1 / 0 +end + +def nan + 0.0 / 0 +end + +def test_add args, assert + assert.equal! (args.fn.add), 0 + assert.equal! (args.fn.+), 0 + assert.equal! (args.fn.+ 1, 2, 3), 6 + assert.equal! (args.fn.+ 0), 0 + assert.equal! (args.fn.+ 0, nil), 0 + assert.equal! (args.fn.+ 0, nan), nil + assert.equal! (args.fn.+ 0, nil, infinity), nil + assert.equal! (args.fn.+ [1, 2, 3, [4, 5, 6]]), 21 + assert.equal! (args.fn.+ [nil, [4, 5, 6]]), 15 +end + +def test_sub args, assert + neg_infinity = infinity * -1 + assert.equal! (args.fn.+), 0 + assert.equal! (args.fn.- 1, 2, 3), -4 + assert.equal! (args.fn.- 4), -4 + assert.equal! (args.fn.- 4, nan), nil + assert.equal! (args.fn.- 0, nil), 0 + assert.equal! (args.fn.- 0, nil, infinity), nil + assert.equal! (args.fn.- [0, 1, 2, 3, [4, 5, 6]]), -21 + assert.equal! (args.fn.- [nil, 0, [4, 5, 6]]), -15 +end + +def test_div args, assert + assert.equal! (args.fn.div), 1 + assert.equal! (args.fn./), 1 + assert.equal! (args.fn./ 6, 3), 2 + assert.equal! (args.fn./ 6, infinity), nil + assert.equal! (args.fn./ 6, nan), nil + assert.equal! (args.fn./ infinity), nil + assert.equal! (args.fn./ 0), nil + assert.equal! (args.fn./ 6, [3]), 2 +end + +def test_idiv args, assert + assert.equal! (args.fn.idiv), 1 + assert.equal! (args.fn.idiv 7, 3), 2 + assert.equal! (args.fn.idiv 6, infinity), nil + assert.equal! (args.fn.idiv 6, nan), nil + assert.equal! (args.fn.idiv infinity), nil + assert.equal! (args.fn.idiv 0), nil + assert.equal! (args.fn.idiv 7, [3]), 2 +end + +def test_mul args, assert + assert.equal! (args.fn.mul), 1 + assert.equal! (args.fn.*), 1 + assert.equal! (args.fn.* 7, 3), 21 + assert.equal! (args.fn.* 6, nan), nil + assert.equal! (args.fn.* 6, infinity), nil + assert.equal! (args.fn.* infinity), nil + assert.equal! (args.fn.* 0), 0 + assert.equal! (args.fn.* 7, [3]), 21 +end + +def test_lt args, assert + assert.equal! (args.fn.lt 1), 1 + assert.equal! (args.fn.lt), nil + assert.equal! (args.fn.lt infinity), nil + assert.equal! (args.fn.lt nan), nil + assert.equal! (args.fn.lt 10, 9, 8), 8 + assert.equal! (args.fn.< 10, 9, 8), 8 + assert.equal! (args.fn.< [10, 9, [8]]), 8 + assert.equal! (args.fn.< 10, 10), nil +end + +def test_lte args, assert + assert.equal! (args.fn.lte 1), 1 + assert.equal! (args.fn.lte), nil + assert.equal! (args.fn.lte infinity), nil + assert.equal! (args.fn.lte nan), nil + assert.equal! (args.fn.lte 10, 9, 8), 8 + assert.equal! (args.fn.lte 10, 10), 10 + assert.equal! (args.fn.lte 10, 9, [8]), 8 + assert.equal! (args.fn.<= 10, 9, 8), 8 +end + +def test_gt args, assert + assert.equal! (args.fn.gt 1), 1 + assert.equal! (args.fn.gt), nil + assert.equal! (args.fn.gt infinity), nil + assert.equal! (args.fn.gt nan), nil + assert.equal! (args.fn.gt 8, 9, 10), 10 + assert.equal! (args.fn.gt [8, 9, [10]]), 10 + assert.equal! (args.fn.gt 10, 10), nil + assert.equal! (args.fn.gt 10, 10), nil + assert.equal! (args.fn.gt 10, 9), nil + assert.equal! (args.fn.> 8, 9, 10), 10 +end + +def test_gte args, assert + assert.equal! (args.fn.gte 1), 1 + assert.equal! (args.fn.gte), nil + assert.equal! (args.fn.gte infinity), nil + assert.equal! (args.fn.gte nan), nil + assert.equal! (args.fn.gte 8, 9, 10), 10 + assert.equal! (args.fn.gte 10, 10), 10 + assert.equal! (args.fn.gte 8, 9, [10]), 10 + assert.equal! (args.fn.gte 10, 9), nil + assert.equal! (args.fn.>= 8, 9, 10), 10 +end + + +def test_acopy args, assert + orig = [1, 2, 3] + clone = args.fn.acopy orig + assert.equal! clone, [1, 2, 3] + assert.equal! clone, orig + assert.not_equal! clone.object_id, orig.object_id +end + +def test_aget args, assert + assert.equal! (args.fn.aget [:a, :b, :c], 1), :b + assert.equal! (args.fn.aget [:a, :b, :c], nil), nil + assert.equal! (args.fn.aget nil, 1), nil +end + +def test_alength args, assert + assert.equal! (args.fn.alength [:a, :b, :c]), 3 + assert.equal! (args.fn.alength nil), nil +end + +def test_amap args, assert + inc = lambda { |i| i + 1 } + ary = [1, 2, 3] + assert.equal! (args.fn.amap ary, inc), [2, 3, 4] + assert.equal! (args.fn.amap nil, inc), nil + assert.equal! (args.fn.amap ary, nil), nil + assert.equal! (args.fn.amap ary, inc).class, Array +end + +def test_and args, assert + assert.equal! (args.fn.and 1, 2, 3, 4), 4 + assert.equal! (args.fn.and 1, 2, nil, 4), nil + assert.equal! (args.fn.and), true +end + +def test_or args, assert + assert.equal! (args.fn.or 1, 2, 3, 4), 1 + assert.equal! (args.fn.or 1, 2, nil, 4), 1 + assert.equal! (args.fn.or), nil + assert.equal! (args.fn.or nil, nil, false, 5, 10), 5 +end + +def test_eq_eq args, assert + assert.equal! (args.fn.eq?), true + assert.equal! (args.fn.eq? 1, 0), false + assert.equal! (args.fn.eq? 1, 1, 1), true + assert.equal! (args.fn.== 1, 1, 1), true + assert.equal! (args.fn.== nil, nil), true +end + +def test_apply args, assert + assert.equal! (args.fn.and [nil, nil, nil]), [nil, nil, nil] + assert.equal! (args.fn.apply [nil, nil, nil], args.fn.method(:and)), nil + and_lambda = lambda {|*xs| args.fn.and(*xs)} + assert.equal! (args.fn.apply [nil, nil, nil], and_lambda), nil +end + +def test_areduce args, assert + assert.equal! (args.fn.areduce [1, 2, 3], 0, lambda { |i, a| i + a }), 6 +end + +def test_array_hash args, assert + assert.equal! (args.fn.array_hash :a, 1, :b, 2), { a: 1, b: 2 } + assert.equal! (args.fn.array_hash), { } +end diff --git a/samples/10_advanced_debugging/03_unit_tests/nil_coercion_tests.rb b/samples/10_advanced_debugging/03_unit_tests/nil_coercion_tests.rb new file mode 100644 index 0000000..dac14b4 --- /dev/null +++ b/samples/10_advanced_debugging/03_unit_tests/nil_coercion_tests.rb @@ -0,0 +1,92 @@ +# numbers +def test_open_entity_add_number args, assert + assert.nil! args.state.i_value + args.state.i_value += 5 + assert.equal! args.state.i_value, 5 + + assert.nil! args.state.f_value + args.state.f_value += 5.5 + assert.equal! args.state.f_value, 5.5 +end + +def test_open_entity_subtract_number args, assert + assert.nil! args.state.i_value + args.state.i_value -= 5 + assert.equal! args.state.i_value, -5 + + assert.nil! args.state.f_value + args.state.f_value -= 5.5 + assert.equal! args.state.f_value, -5.5 +end + +def test_open_entity_multiply_number args, assert + assert.nil! args.state.i_value + args.state.i_value *= 5 + assert.equal! args.state.i_value, 0 + + assert.nil! args.state.f_value + args.state.f_value *= 5.5 + assert.equal! args.state.f_value, 0 +end + +def test_open_entity_divide_number args, assert + assert.nil! args.state.i_value + args.state.i_value /= 5 + assert.equal! args.state.i_value, 0 + + assert.nil! args.state.f_value + args.state.f_value /= 5.5 + assert.equal! args.state.f_value, 0 +end + +# array +def test_open_entity_add_array args, assert + assert.nil! args.state.values + args.state.values += [:a, :b, :c] + assert.equal! args.state.values, [:a, :b, :c] +end + +def test_open_entity_subtract_array args, assert + assert.nil! args.state.values + args.state.values -= [:a, :b, :c] + assert.equal! args.state.values, [] +end + +def test_open_entity_shovel_array args, assert + assert.nil! args.state.values + args.state.values << :a + assert.equal! args.state.values, [:a] +end + +def test_open_entity_enumerate args, assert + assert.nil! args.state.values + args.state.values = args.state.values.map_with_index { |i| i } + assert.equal! args.state.values, [] + + assert.nil! args.state.values_2 + args.state.values_2 = args.state.values_2.map { |i| i } + assert.equal! args.state.values_2, [] + + assert.nil! args.state.values_3 + args.state.values_3 = args.state.values_3.flat_map { |i| i } + assert.equal! args.state.values_3, [] +end + +# hashes +def test_open_entity_indexer args, assert + GTK::Entity.__reset_id__! + assert.nil! args.state.values + args.state.values[:test] = :value + assert.equal! args.state.values.to_s, { entity_id: 1, entity_name: :values, entity_keys_by_ref: {}, test: :value }.to_s +end + +# bug +def test_open_entity_nil_bug args, assert + GTK::Entity.__reset_id__! + args.state.foo.a + args.state.foo.b + @hello[:foobar] + assert.nil! args.state.foo.a, "a was not nil." + # the line below fails + # assert.nil! args.state.foo.b, "b was not nil." +end |
