summaryrefslogtreecommitdiffhomepage
path: root/samples/10_advanced_debugging/03_unit_tests
diff options
context:
space:
mode:
Diffstat (limited to 'samples/10_advanced_debugging/03_unit_tests')
-rw-r--r--samples/10_advanced_debugging/03_unit_tests/benchmark_api_tests.rb43
-rw-r--r--samples/10_advanced_debugging/03_unit_tests/pretty_format_tests.rb130
-rw-r--r--samples/10_advanced_debugging/03_unit_tests/run-bash.sh4
-rw-r--r--samples/10_advanced_debugging/03_unit_tests/run-tests.sh27
-rw-r--r--samples/10_advanced_debugging/03_unit_tests/serialize_deserialize_tests.rb18
5 files changed, 205 insertions, 17 deletions
diff --git a/samples/10_advanced_debugging/03_unit_tests/benchmark_api_tests.rb b/samples/10_advanced_debugging/03_unit_tests/benchmark_api_tests.rb
new file mode 100644
index 0000000..2c06f1a
--- /dev/null
+++ b/samples/10_advanced_debugging/03_unit_tests/benchmark_api_tests.rb
@@ -0,0 +1,43 @@
+def test_benchmark_api args, assert
+ result = args.gtk.benchmark iterations: 100,
+ only_one: -> () {
+ r = 0
+ (1..100).each do |i|
+ r += 1
+ end
+ }
+
+ assert.equal! result.first_place.name, :only_one
+
+ result = args.gtk.benchmark iterations: 100,
+ iterations_100: -> () {
+ r = 0
+ (1..100).each do |i|
+ r += 1
+ end
+ },
+ iterations_50: -> () {
+ r = 0
+ (1..50).each do |i|
+ r += 1
+ end
+ }
+
+ assert.equal! result.first_place.name, :iterations_50
+
+ result = args.gtk.benchmark iterations: 1,
+ iterations_100: -> () {
+ r = 0
+ (1..100).each do |i|
+ r += 1
+ end
+ },
+ iterations_50: -> () {
+ r = 0
+ (1..50).each do |i|
+ r += 1
+ end
+ }
+
+ assert.equal! result.too_small_to_measure, true
+end
diff --git a/samples/10_advanced_debugging/03_unit_tests/pretty_format_tests.rb b/samples/10_advanced_debugging/03_unit_tests/pretty_format_tests.rb
new file mode 100644
index 0000000..6ac7b05
--- /dev/null
+++ b/samples/10_advanced_debugging/03_unit_tests/pretty_format_tests.rb
@@ -0,0 +1,130 @@
+def H opts
+ opts
+end
+
+def A *opts
+ opts
+end
+
+def assert_format args, assert, hash, expected
+ actual = args.fn.pretty_format hash
+ assert.are_equal! actual, expected
+end
+
+def test_pretty_print args, assert
+ # =============================
+ # hash with single value
+ # =============================
+ input = (H first_name: "John")
+ expected = <<-S
+{:first_name "John"}
+S
+ (assert_format args, assert, input, expected)
+
+ # =============================
+ # hash with two values
+ # =============================
+ input = (H first_name: "John", last_name: "Smith")
+ expected = <<-S
+{:first_name "John"
+ :last_name "Smith"}
+S
+
+ (assert_format args, assert, input, expected)
+
+ # =============================
+ # hash with inner hash
+ # =============================
+ input = (H first_name: "John",
+ last_name: "Smith",
+ middle_initial: "I",
+ so: (H first_name: "Pocahontas",
+ last_name: "Tsenacommacah"),
+ friends: (A (H first_name: "Side", last_name: "Kick"),
+ (H first_name: "Tim", last_name: "Wizard")))
+ expected = <<-S
+{:first_name "John"
+ :last_name "Smith"
+ :middle_initial "I"
+ :so {:first_name "Pocahontas"
+ :last_name "Tsenacommacah"}
+ :friends [{:first_name "Side"
+ :last_name "Kick"}
+ {:first_name "Tim"
+ :last_name "Wizard"}]}
+S
+
+ (assert_format args, assert, input, expected)
+
+ # =============================
+ # array with one value
+ # =============================
+ input = (A 1)
+ expected = <<-S
+[1]
+S
+ (assert_format args, assert, input, expected)
+
+ # =============================
+ # array with multiple values
+ # =============================
+ input = (A 1, 2, 3)
+ expected = <<-S
+[1
+ 2
+ 3]
+S
+ (assert_format args, assert, input, expected)
+
+ # =============================
+ # array with multiple values hashes
+ # =============================
+ input = (A (H first_name: "Side", last_name: "Kick"),
+ (H first_name: "Tim", last_name: "Wizard"))
+ expected = <<-S
+[{:first_name "Side"
+ :last_name "Kick"}
+ {:first_name "Tim"
+ :last_name "Wizard"}]
+S
+
+ (assert_format args, assert, input, expected)
+end
+
+def test_nested_nested args, assert
+ # =============================
+ # nested array in nested hash
+ # =============================
+ input = (H type: :root,
+ text: "Root",
+ children: (A (H level: 1,
+ text: "Level 1",
+ children: (A (H level: 2,
+ text: "Level 2",
+ children: [])))))
+
+ expected = <<-S
+{:type :root
+ :text "Root"
+ :children [{:level 1
+ :text "Level 1"
+ :children [{:level 2
+ :text "Level 2"
+ :children []}]}]}
+
+S
+
+ (assert_format args, assert, input, expected)
+end
+
+def test_scene args, assert
+ script = <<-S
+* Scene 1
+** Narrator
+They say happy endings don't exist.
+** Narrator
+They say true love is a lie.
+S
+ input = parse_org args, script
+ puts (args.fn.pretty_format input)
+end
diff --git a/samples/10_advanced_debugging/03_unit_tests/run-bash.sh b/samples/10_advanced_debugging/03_unit_tests/run-bash.sh
deleted file mode 100644
index 005077b..0000000
--- a/samples/10_advanced_debugging/03_unit_tests/run-bash.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-sh ./amir-build-and-run.sh --eval samples/99_zz_gtk_unit_tests/geometry_tests.rb --no-tick
-sh ./amir-build-and-run.sh --eval samples/99_zz_gtk_unit_tests/parsing_tests.rb --no-tick
-sh ./amir-build-and-run.sh --eval samples/99_zz_gtk_unit_tests/http_tests.rb --no-tick
-sh ./amir-build-and-run.sh --eval samples/99_zz_gtk_unit_tests/array_to_primitive_tests.rb --no-tick
diff --git a/samples/10_advanced_debugging/03_unit_tests/run-tests.sh b/samples/10_advanced_debugging/03_unit_tests/run-tests.sh
index e551edf..d8b1a4a 100644
--- a/samples/10_advanced_debugging/03_unit_tests/run-tests.sh
+++ b/samples/10_advanced_debugging/03_unit_tests/run-tests.sh
@@ -1,10 +1,17 @@
-./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/require_tests.rb
-./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/gen_docs.rb
-./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/geometry_tests.rb
-./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/http_tests.rb
-./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/object_to_primitive_tests.rb
-./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/parsing_tests.rb
-./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/require_tests.rb
-./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/serialize_deserialize_tests.rb
-./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/state_serialization_experimental_tests.rb
-./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/suggest_autocompletion_tests.rb
+# fswatch ./samples/10_advanced_debugging/03_unit_tests/benchmark_api_tests.rb | xargs -n1 -I{} sh ./samples/10_advanced_debugging/03_unit_tests/run-tests.sh
+# set -e
+# rake
+# ./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/require_tests.rb
+# ./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/gen_docs.rb
+# ./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/geometry_tests.rb
+# ./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/http_tests.rb
+# ./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/object_to_primitive_tests.rb
+# ./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/parsing_tests.rb
+# ./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/require_tests.rb
+# ./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/serialize_deserialize_tests.rb
+# ./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/state_serialization_experimental_tests.rb
+# ./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/suggest_autocompletion_tests.rb
+# ./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/nil_coercion_tests.rb
+# ./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/fn_tests.rb
+# ./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/pretty_format_test.rb
+./dragonruby mygame --test samples/10_advanced_debugging/03_unit_tests/benchmark_api_tests.rb
diff --git a/samples/10_advanced_debugging/03_unit_tests/serialize_deserialize_tests.rb b/samples/10_advanced_debugging/03_unit_tests/serialize_deserialize_tests.rb
index 8505bdf..12c08f6 100644
--- a/samples/10_advanced_debugging/03_unit_tests/serialize_deserialize_tests.rb
+++ b/samples/10_advanced_debugging/03_unit_tests/serialize_deserialize_tests.rb
@@ -2,12 +2,12 @@ def test_serialize args, assert
GTK::Entity.__reset_id__!
args.state.player_one = "test"
result = args.gtk.serialize_state args.state
- assert.equal! result, "{:entity_id=>3, :entity_keys_by_ref=>{}, :tick_count=>-1, :player_one=>\"test\"}"
+ assert.equal! result, "{:entity_id=>4, :entity_keys_by_ref=>{}, :tick_count=>-1, :player_one=>\"test\"}"
GTK::Entity.__reset_id__!
args.gtk.write_file 'state.txt', ''
result = args.gtk.serialize_state 'state.txt', args.state
- assert.equal! result, "{:entity_id=>3, :entity_keys_by_ref=>{}, :tick_count=>-1, :player_one=>\"test\"}"
+ assert.equal! result, "{:entity_id=>4, :entity_keys_by_ref=>{}, :tick_count=>-1, :player_one=>\"test\"}"
end
def test_deserialize args, assert
@@ -56,7 +56,7 @@ def test_strict_entity_serialization_with_nil args, assert
args.state.player_two = args.state.new_entity_strict(:player_strict, name: "Ken", blood_type: nil)
serialized_state = args.gtk.serialize_state args.state
- assert.equal! serialized_state, '{:entity_id=>9, :entity_keys_by_ref=>{}, :tick_count=>-1, :player_one=>{:entity_id=>1, :entity_name=>:player, :entity_keys_by_ref=>{}, :entity_type=>:player, :created_at=>-1, :global_created_at=>-1, :name=>"Ryu"}, :player_two=>{:entity_id=>2, :entity_name=>:player_strict, :entity_type=>:player_strict, :created_at=>-1, :global_created_at_elapsed=>-1, :entity_strict=>true, :entity_keys_by_ref=>{:entity_type=>:entity_name, :global_created_at_elapsed=>:created_at}, :name=>"Ken", :blood_type=>nil}}'
+ assert.equal! serialized_state, '{:entity_id=>7, :entity_keys_by_ref=>{}, :tick_count=>-1, :player_one=>{:entity_id=>1, :entity_name=>:player, :entity_keys_by_ref=>{}, :entity_type=>:player, :created_at=>-1, :global_created_at=>-1, :name=>"Ryu"}, :player_two=>{:entity_id=>2, :entity_name=>:player_strict, :entity_type=>:player_strict, :created_at=>-1, :global_created_at_elapsed=>-1, :entity_strict=>true, :entity_keys_by_ref=>{:entity_type=>:entity_name, :global_created_at_elapsed=>:created_at}, :name=>"Ken", :blood_type=>nil}}'
GTK::Entity.__reset_id__!
deserialized_state = args.gtk.deserialize_state serialized_state
@@ -113,3 +113,15 @@ def test_by_reference_state_strict_entities args, assert
deserialized_state = args.gtk.deserialize_state serialized_state
assert.equal! deserialized_state.strict_entity.one, deserialized_state.strict_entity.two
end
+
+def test_serialization_excludes_thrash_count args, assert
+ GTK::Entity.__reset_id__!
+ args.state.player.name = "Ryu"
+ # force a nil pun
+ if args.state.player.age > 30
+ end
+ assert.equal! args.state.player.as_hash[:__thrash_count__][:>], 1
+ result = args.gtk.serialize_state args.state
+ assert.false! (result.include? "__thrash_count__"),
+ "The __thrash_count__ key exists in state when it shouldn't have."
+end