summaryrefslogtreecommitdiffhomepage
path: root/samples/10_advanced_debugging
diff options
context:
space:
mode:
authorAmir Rajan <[email protected]>2021-04-10 03:51:14 -0500
committerAmir Rajan <[email protected]>2021-04-10 03:51:14 -0500
commit00e85147c9a1dd35a0857f361e5833a1c25f4a0a (patch)
tree52534d292ca3fa5733584eb926116228cb3551af /samples/10_advanced_debugging
parenta2d92c2bf09bcdc494f1391af69b707cca281a16 (diff)
downloaddragonruby-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.rb180
-rw-r--r--samples/10_advanced_debugging/03_unit_tests/nil_coercion_tests.rb92
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