state_machine 0.8.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.rdoc +19 -0
- data/README.rdoc +24 -4
- data/Rakefile +10 -16
- data/lib/state_machine.rb +1 -1
- data/lib/state_machine/event_collection.rb +4 -6
- data/lib/state_machine/integrations/active_record.rb +100 -23
- data/lib/state_machine/integrations/active_record/observer.rb +5 -1
- data/lib/state_machine/integrations/data_mapper.rb +22 -4
- data/lib/state_machine/integrations/sequel.rb +6 -7
- data/lib/state_machine/machine.rb +29 -10
- data/lib/state_machine/machine_collection.rb +20 -13
- data/lib/state_machine/state.rb +4 -4
- data/{tasks → lib/tasks}/state_machine.rake +0 -0
- data/{tasks → lib/tasks}/state_machine.rb +1 -1
- data/test/functional/state_machine_test.rb +21 -1
- data/test/unit/event_collection_test.rb +9 -0
- data/test/unit/event_test.rb +45 -1
- data/test/unit/guard_test.rb +1 -1
- data/test/unit/integrations/active_record_test.rb +651 -325
- data/test/unit/integrations/data_mapper_test.rb +954 -404
- data/test/unit/integrations/sequel_test.rb +628 -189
- data/test/unit/machine_collection_test.rb +223 -18
- data/test/unit/machine_test.rb +16 -13
- data/test/unit/state_test.rb +14 -15
- metadata +70 -78
@@ -69,6 +69,38 @@ class MachineCollectionStateInitializationTest < Test::Unit::TestCase
|
|
69
69
|
assert_nil @object.state
|
70
70
|
assert_equal 'active', @object.alarm_state
|
71
71
|
end
|
72
|
+
|
73
|
+
def test_should_not_set_states_if_ignored
|
74
|
+
@machines.initialize_states(@object, :ignore => [:state, :alarm_state])
|
75
|
+
|
76
|
+
assert_nil @object.state
|
77
|
+
assert_nil @object.alarm_state
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_should_set_states_if_not_ignored_and_nil
|
81
|
+
@machines.initialize_states(@object, :ignore => [])
|
82
|
+
|
83
|
+
assert_equal 'parked', @object.state
|
84
|
+
assert_equal 'active', @object.alarm_state
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_should_set_states_if_not_ignored_and_empty
|
88
|
+
@object.state = ''
|
89
|
+
@object.alarm_state = ''
|
90
|
+
@machines.initialize_states(@object, :ignore => [])
|
91
|
+
|
92
|
+
assert_equal 'parked', @object.state
|
93
|
+
assert_equal 'active', @object.alarm_state
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_should_set_states_if_not_ignored_and_not_empty
|
97
|
+
@object.state = 'idling'
|
98
|
+
@object.alarm_state = 'inactive'
|
99
|
+
@machines.initialize_states(@object, :ignore => [])
|
100
|
+
|
101
|
+
assert_equal 'parked', @object.state
|
102
|
+
assert_equal 'active', @object.alarm_state
|
103
|
+
end
|
72
104
|
end
|
73
105
|
|
74
106
|
class MachineCollectionFireExplicitTest < Test::Unit::TestCase
|
@@ -293,6 +325,10 @@ class MachineCollectionFireImplicitWithoutEventTest < MachineCollectionFireImpli
|
|
293
325
|
def test_should_not_change_event_attribute
|
294
326
|
assert_nil @object.state_event
|
295
327
|
end
|
328
|
+
|
329
|
+
def test_should_not_have_event_transition
|
330
|
+
assert_nil @object.send(:state_event_transition)
|
331
|
+
end
|
296
332
|
end
|
297
333
|
|
298
334
|
class MachineCollectionFireImplicitWithBlankEventTest < MachineCollectionFireImplicitTest
|
@@ -318,6 +354,10 @@ class MachineCollectionFireImplicitWithBlankEventTest < MachineCollectionFireImp
|
|
318
354
|
def test_should_not_change_event_attribute
|
319
355
|
assert_nil @object.state_event
|
320
356
|
end
|
357
|
+
|
358
|
+
def test_should_not_have_event_transition
|
359
|
+
assert_nil @object.send(:state_event_transition)
|
360
|
+
end
|
321
361
|
end
|
322
362
|
|
323
363
|
class MachineCollectionFireImplicitWithInvalidEventTest < MachineCollectionFireImplicitTest
|
@@ -343,6 +383,10 @@ class MachineCollectionFireImplicitWithInvalidEventTest < MachineCollectionFireI
|
|
343
383
|
def test_should_not_reset_event_attribute
|
344
384
|
assert_equal :invalid, @object.state_event
|
345
385
|
end
|
386
|
+
|
387
|
+
def test_should_not_have_event_transition
|
388
|
+
assert_nil @object.send(:state_event_transition)
|
389
|
+
end
|
346
390
|
end
|
347
391
|
|
348
392
|
class MachineCollectionFireImplicitWithoutTransitionTest < MachineCollectionFireImplicitTest
|
@@ -369,6 +413,10 @@ class MachineCollectionFireImplicitWithoutTransitionTest < MachineCollectionFire
|
|
369
413
|
def test_should_not_reset_event_attribute
|
370
414
|
assert_equal :ignite, @object.state_event
|
371
415
|
end
|
416
|
+
|
417
|
+
def test_should_not_have_event_transition
|
418
|
+
assert_nil @object.send(:state_event_transition)
|
419
|
+
end
|
372
420
|
end
|
373
421
|
|
374
422
|
class MachineCollectionFireImplicitWithTransitionTest < MachineCollectionFireImplicitTest
|
@@ -404,6 +452,10 @@ class MachineCollectionFireImplicitWithTransitionTest < MachineCollectionFireImp
|
|
404
452
|
assert_nil @object.state_event
|
405
453
|
end
|
406
454
|
|
455
|
+
def test_should_not_have_event_transition
|
456
|
+
assert_nil @object.send(:state_event_transition)
|
457
|
+
end
|
458
|
+
|
407
459
|
def test_should_not_be_successful_if_fired_again
|
408
460
|
@object.state_event = 'ignite'
|
409
461
|
assert !@machines.fire_event_attributes(@object, :save) { true }
|
@@ -455,6 +507,10 @@ class MachineCollectionFireImplicitWithActionFailureTest < MachineCollectionFire
|
|
455
507
|
def test_should_not_reset_event_attribute
|
456
508
|
assert_equal :ignite, @object.state_event
|
457
509
|
end
|
510
|
+
|
511
|
+
def test_should_not_have_event_transition
|
512
|
+
assert_nil @object.send(:state_event_transition)
|
513
|
+
end
|
458
514
|
end
|
459
515
|
|
460
516
|
class MachineCollectionFireImplicitWithActionErrorTest < MachineCollectionFireImplicitTest
|
@@ -472,34 +528,27 @@ class MachineCollectionFireImplicitWithActionErrorTest < MachineCollectionFireIm
|
|
472
528
|
def test_should_not_reset_event_attribute
|
473
529
|
assert_equal :ignite, @object.state_event
|
474
530
|
end
|
531
|
+
|
532
|
+
def test_should_not_have_event_transition
|
533
|
+
assert_nil @object.send(:state_event_transition)
|
534
|
+
end
|
475
535
|
end
|
476
536
|
|
477
537
|
class MachineCollectionFireImplicitPartialTest < MachineCollectionFireImplicitTest
|
478
538
|
def setup
|
479
539
|
super
|
480
540
|
|
481
|
-
@ran_before_callback = false
|
482
|
-
@ran_after_callback = false
|
483
|
-
@machine.before_transition { @ran_before_callback = true }
|
484
|
-
@machine.after_transition { @ran_after_callback = true }
|
485
|
-
|
486
541
|
@state_event = nil
|
542
|
+
@state_event_transition = nil
|
487
543
|
|
488
544
|
@object.state_event = 'ignite'
|
489
545
|
@result = @machines.fire_event_attributes(@object, :save, false) do
|
490
546
|
@state_event = @object.state_event
|
547
|
+
@state_event_transition = @object.send(:state_event_transition)
|
491
548
|
true
|
492
549
|
end
|
493
550
|
end
|
494
551
|
|
495
|
-
def test_should_run_before_callbacks
|
496
|
-
assert @ran_before_callback
|
497
|
-
end
|
498
|
-
|
499
|
-
def test_should_not_run_after_callbacks
|
500
|
-
assert !@ran_after_callback
|
501
|
-
end
|
502
|
-
|
503
552
|
def test_should_be_successful
|
504
553
|
assert @result
|
505
554
|
end
|
@@ -508,20 +557,33 @@ class MachineCollectionFireImplicitPartialTest < MachineCollectionFireImplicitTe
|
|
508
557
|
assert_nil @state_event
|
509
558
|
end
|
510
559
|
|
560
|
+
def test_should_not_have_event_transition_while_running_action
|
561
|
+
assert_nil @state_event_transition
|
562
|
+
end
|
563
|
+
|
511
564
|
def test_should_transition_state
|
512
565
|
assert_equal 'idling', @object.state
|
513
566
|
end
|
514
567
|
|
515
|
-
def
|
516
|
-
|
568
|
+
def test_should_reset_event_attribute
|
569
|
+
assert_nil @object.state_event
|
517
570
|
end
|
518
571
|
|
519
|
-
def
|
572
|
+
def test_should_have_event_transition
|
573
|
+
assert_not_nil @object.send(:state_event_transition)
|
574
|
+
end
|
575
|
+
|
576
|
+
def test_should_reset_event_after_next_fire_on_success
|
520
577
|
assert @machines.fire_event_attributes(@object, :save) { true }
|
521
578
|
assert_equal 'idling', @object.state
|
522
579
|
assert_nil @object.state_event
|
523
580
|
end
|
524
581
|
|
582
|
+
def test_should_reset_event_transition_after_next_fire_on_success
|
583
|
+
assert @machines.fire_event_attributes(@object, :save) { true }
|
584
|
+
assert_nil @object.send(:state_event_transition)
|
585
|
+
end
|
586
|
+
|
525
587
|
def test_should_guard_transition_after_next_fire_on_success
|
526
588
|
@machines.fire_event_attributes(@object, :save) { true }
|
527
589
|
|
@@ -534,6 +596,7 @@ class MachineCollectionFireImplicitPartialTest < MachineCollectionFireImplicitTe
|
|
534
596
|
assert !@machines.fire_event_attributes(@object, :save) { false }
|
535
597
|
assert_equal 'parked', @object.state
|
536
598
|
assert_equal :ignite, @object.state_event
|
599
|
+
assert_nil @object.send(:state_event_transition)
|
537
600
|
|
538
601
|
@object.state = 'idling'
|
539
602
|
assert !@machines.fire_event_attributes(@object, :save) { false }
|
@@ -550,6 +613,7 @@ class MachineCollectionFireImplicitPartialTest < MachineCollectionFireImplicitTe
|
|
550
613
|
assert_raise(ArgumentError) { @machines.fire_event_attributes(@object, :save) { raise ArgumentError } }
|
551
614
|
assert_equal 'parked', @object.state
|
552
615
|
assert_equal :ignite, @object.state_event
|
616
|
+
assert_nil @object.send(:state_event_transition)
|
553
617
|
end
|
554
618
|
|
555
619
|
def test_should_guard_transition_after_next_fire_on_error
|
@@ -563,6 +627,62 @@ class MachineCollectionFireImplicitPartialTest < MachineCollectionFireImplicitTe
|
|
563
627
|
end
|
564
628
|
end
|
565
629
|
|
630
|
+
class MachineCollectionFireImplicitPartialWithCallbacksTest < MachineCollectionFireImplicitTest
|
631
|
+
def setup
|
632
|
+
super
|
633
|
+
|
634
|
+
@object.state_event = 'ignite'
|
635
|
+
end
|
636
|
+
|
637
|
+
def test_should_run_before_callbacks
|
638
|
+
ran_callback = false
|
639
|
+
@machine.before_transition { ran_callback = true }
|
640
|
+
@machines.fire_event_attributes(@object, :save, false) { true }
|
641
|
+
|
642
|
+
assert ran_callback
|
643
|
+
end
|
644
|
+
|
645
|
+
def test_should_not_have_event_during_before_callbacks
|
646
|
+
state_event = nil
|
647
|
+
@machine.before_transition {|object, transition| state_event = object.state_event }
|
648
|
+
@machines.fire_event_attributes(@object, :save, false) { true }
|
649
|
+
|
650
|
+
assert_nil state_event
|
651
|
+
end
|
652
|
+
|
653
|
+
def test_should_not_have_event_transition_during_before_callbacks
|
654
|
+
state_event_transition = nil
|
655
|
+
@machine.before_transition {|object, transition| state_event_transition = object.send(:state_event_transition) }
|
656
|
+
@machines.fire_event_attributes(@object, :save, false) { true }
|
657
|
+
|
658
|
+
assert_nil state_event_transition
|
659
|
+
end
|
660
|
+
|
661
|
+
def test_should_not_run_after_callbacks
|
662
|
+
ran_callback = false
|
663
|
+
@machine.after_transition { ran_callback = true }
|
664
|
+
@machines.fire_event_attributes(@object, :save, false) { true }
|
665
|
+
|
666
|
+
assert !ran_callback
|
667
|
+
end
|
668
|
+
|
669
|
+
def test_should_not_have_event_during_after_callbacks
|
670
|
+
state_event = nil
|
671
|
+
@machine.after_transition {|object, transition| state_event = object.state_event }
|
672
|
+
@machines.fire_event_attributes(@object, :save, false) { true }
|
673
|
+
|
674
|
+
assert_nil state_event
|
675
|
+
end
|
676
|
+
|
677
|
+
def test_should_not_have_event_transition_during_after_callbacks
|
678
|
+
state_event_transition = nil
|
679
|
+
@machine.after_transition {|object, transition| state_event_transition = object.send(:state_event_transition) }
|
680
|
+
@machines.fire_event_attributes(@object, :save, false) { true }
|
681
|
+
|
682
|
+
assert_nil state_event_transition
|
683
|
+
end
|
684
|
+
end
|
685
|
+
|
566
686
|
class MachineCollectionFireImplicitNestedPartialTest < MachineCollectionFireImplicitTest
|
567
687
|
def setup
|
568
688
|
super
|
@@ -591,6 +711,10 @@ class MachineCollectionFireImplicitNestedPartialTest < MachineCollectionFireImpl
|
|
591
711
|
def test_should_reset_event_attribute
|
592
712
|
assert_nil @object.state_event
|
593
713
|
end
|
714
|
+
|
715
|
+
def test_should_reset_event_transition_attribute
|
716
|
+
assert_nil @object.send(:state_event_transition)
|
717
|
+
end
|
594
718
|
end
|
595
719
|
|
596
720
|
class MachineCollectionFireImplicitWithDifferentActionsTest < MachineCollectionFireImplicitTest
|
@@ -614,10 +738,14 @@ class MachineCollectionFireImplicitWithDifferentActionsTest < MachineCollectionF
|
|
614
738
|
assert_equal 'idling', @object.state
|
615
739
|
end
|
616
740
|
|
617
|
-
def
|
741
|
+
def test_should_reset_event_attribute_for_action
|
618
742
|
assert_nil @object.state_event
|
619
743
|
end
|
620
744
|
|
745
|
+
def test_should_reset_event_transition_attribute_for_action
|
746
|
+
assert_nil @object.send(:state_event_transition)
|
747
|
+
end
|
748
|
+
|
621
749
|
def test_should_not_transition_states_for_other_actions
|
622
750
|
assert_equal 'active', @object.alarm_state
|
623
751
|
end
|
@@ -723,11 +851,88 @@ class MachineCollectionFireImplicitWithCustomMachineNameTest < MachineCollection
|
|
723
851
|
assert @machines.fire_event_attributes(@object, :save) { true }
|
724
852
|
assert_equal 'idling', @object.state
|
725
853
|
assert_nil @object.state_event
|
854
|
+
assert_nil @object.send(:state_event_transition)
|
726
855
|
end
|
727
856
|
|
728
857
|
def test_should_be_successful_on_partial_fire
|
729
858
|
@machines.fire_event_attributes(@object, :save, false) { true }
|
730
859
|
assert_equal 'idling', @object.state
|
731
|
-
|
860
|
+
assert_nil @object.state_event
|
861
|
+
assert_not_nil @object.send(:state_event_transition)
|
862
|
+
end
|
863
|
+
end
|
864
|
+
|
865
|
+
class MachineFireImplicitWithMarshallingTest < MachineCollectionFireImplicitTest
|
866
|
+
def setup
|
867
|
+
super
|
868
|
+
self.class.const_set('Example', @klass)
|
869
|
+
|
870
|
+
@object.state_event = 'ignite'
|
871
|
+
end
|
872
|
+
|
873
|
+
def test_should_marshal_during_before_callbacks
|
874
|
+
@machine.before_transition {|object, transition| Marshal.dump(object)}
|
875
|
+
assert_nothing_raised { @machines.fire_event_attributes(@object, :save) { true } }
|
876
|
+
end
|
877
|
+
|
878
|
+
def test_should_marshal_during_action
|
879
|
+
assert_nothing_raised do
|
880
|
+
@machines.fire_event_attributes(@object, :save) do
|
881
|
+
Marshal.dump(@object)
|
882
|
+
true
|
883
|
+
end
|
884
|
+
end
|
885
|
+
end
|
886
|
+
|
887
|
+
def test_should_marshal_during_after_callbacks
|
888
|
+
@machine.after_transition {|object, transition| Marshal.dump(object)}
|
889
|
+
assert_nothing_raised { @machines.fire_event_attributes(@object, :save) { true } }
|
890
|
+
end
|
891
|
+
|
892
|
+
def teardown
|
893
|
+
self.class.send(:remove_const, 'Example')
|
894
|
+
end
|
895
|
+
end
|
896
|
+
|
897
|
+
class MachineFireImplicitPartialWithMarshallingTest < MachineCollectionFireImplicitTest
|
898
|
+
def setup
|
899
|
+
super
|
900
|
+
self.class.const_set('Example', @klass)
|
901
|
+
|
902
|
+
@object.state_event = 'ignite'
|
903
|
+
end
|
904
|
+
|
905
|
+
def test_should_marshal_during_before_callbacks
|
906
|
+
@machine.before_transition {|object, transition| Marshal.dump(object)}
|
907
|
+
assert_nothing_raised do
|
908
|
+
@machines.fire_event_attributes(@object, :save, false) { true }
|
909
|
+
@machines.fire_event_attributes(@object, :save) { true }
|
910
|
+
end
|
911
|
+
end
|
912
|
+
|
913
|
+
def test_should_marshal_during_action
|
914
|
+
assert_nothing_raised do
|
915
|
+
@machines.fire_event_attributes(@object, :save, false) do
|
916
|
+
Marshal.dump(@object)
|
917
|
+
true
|
918
|
+
end
|
919
|
+
|
920
|
+
@machines.fire_event_attributes(@object, :save) do
|
921
|
+
Marshal.dump(@object)
|
922
|
+
true
|
923
|
+
end
|
924
|
+
end
|
925
|
+
end
|
926
|
+
|
927
|
+
def test_should_marshal_during_after_callbacks
|
928
|
+
@machine.after_transition {|object, transition| Marshal.dump(object)}
|
929
|
+
assert_nothing_raised do
|
930
|
+
@machines.fire_event_attributes(@object, :save, false) { true }
|
931
|
+
@machines.fire_event_attributes(@object, :save) { true }
|
932
|
+
end
|
933
|
+
end
|
934
|
+
|
935
|
+
def teardown
|
936
|
+
self.class.send(:remove_const, 'Example')
|
732
937
|
end
|
733
938
|
end
|
data/test/unit/machine_test.rb
CHANGED
@@ -1853,34 +1853,37 @@ begin
|
|
1853
1853
|
end
|
1854
1854
|
|
1855
1855
|
def test_should_save_file_with_class_name_by_default
|
1856
|
-
graph = @machine.draw
|
1857
|
-
|
1856
|
+
graph = @machine.draw
|
1857
|
+
assert File.exists?('./Vehicle_state.png')
|
1858
1858
|
end
|
1859
1859
|
|
1860
1860
|
def test_should_allow_base_name_to_be_customized
|
1861
|
-
graph = @machine.draw(:name => 'machine'
|
1862
|
-
|
1861
|
+
graph = @machine.draw(:name => 'machine')
|
1862
|
+
assert File.exists?('./machine.png')
|
1863
1863
|
end
|
1864
1864
|
|
1865
1865
|
def test_should_allow_format_to_be_customized
|
1866
|
-
graph = @machine.draw(:format => 'jpg'
|
1867
|
-
|
1868
|
-
assert_equal 'jpg', graph.instance_variable_get('@format')
|
1866
|
+
graph = @machine.draw(:format => 'jpg')
|
1867
|
+
assert File.exists?('./Vehicle_state.jpg')
|
1869
1868
|
end
|
1870
1869
|
|
1871
1870
|
def test_should_allow_path_to_be_customized
|
1872
|
-
graph = @machine.draw(:path => "#{File.dirname(__FILE__)}/"
|
1873
|
-
|
1871
|
+
graph = @machine.draw(:path => "#{File.dirname(__FILE__)}/")
|
1872
|
+
assert File.exists?("#{File.dirname(__FILE__)}/Vehicle_state.png")
|
1874
1873
|
end
|
1875
1874
|
|
1876
1875
|
def test_should_allow_orientation_to_be_landscape
|
1877
|
-
graph = @machine.draw(:orientation => 'landscape'
|
1878
|
-
assert_equal 'LR', graph['rankdir']
|
1876
|
+
graph = @machine.draw(:orientation => 'landscape')
|
1877
|
+
assert_equal 'LR', graph['rankdir'].to_s.gsub('"', '')
|
1879
1878
|
end
|
1880
1879
|
|
1881
1880
|
def test_should_allow_orientation_to_be_portrait
|
1882
|
-
graph = @machine.draw(:orientation => 'portrait'
|
1883
|
-
assert_equal 'TB', graph['rankdir']
|
1881
|
+
graph = @machine.draw(:orientation => 'portrait')
|
1882
|
+
assert_equal 'TB', graph['rankdir'].to_s.gsub('"', '')
|
1883
|
+
end
|
1884
|
+
|
1885
|
+
def teardown
|
1886
|
+
FileUtils.rm Dir["{.,#{File.dirname(__FILE__)}}/*.{png,jpg}"]
|
1884
1887
|
end
|
1885
1888
|
end
|
1886
1889
|
|
data/test/unit/state_test.rb
CHANGED
@@ -626,9 +626,8 @@ class StateWithInvalidMethodCallTest < Test::Unit::TestCase
|
|
626
626
|
@object = @klass.new
|
627
627
|
end
|
628
628
|
|
629
|
-
def
|
630
|
-
|
631
|
-
assert_equal "undefined method 'invalid' for #{@object} with idling state", exception.message
|
629
|
+
def test_should_call_method_missing_arg
|
630
|
+
assert_equal 1, @state.call(@object, :invalid, lambda {1})
|
632
631
|
end
|
633
632
|
end
|
634
633
|
|
@@ -648,11 +647,11 @@ class StateWithValidMethodCallTest < Test::Unit::TestCase
|
|
648
647
|
end
|
649
648
|
|
650
649
|
def test_should_not_raise_an_exception
|
651
|
-
assert_nothing_raised { @state.call(@object, :speed) }
|
650
|
+
assert_nothing_raised { @state.call(@object, :speed, lambda {raise}) }
|
652
651
|
end
|
653
652
|
|
654
653
|
def test_should_pass_arguments_through
|
655
|
-
assert_equal 1, @state.call(@object, :speed, 1)
|
654
|
+
assert_equal 1, @state.call(@object, :speed, lambda {}, 1)
|
656
655
|
end
|
657
656
|
|
658
657
|
def test_should_pass_blocks_through
|
@@ -660,7 +659,7 @@ class StateWithValidMethodCallTest < Test::Unit::TestCase
|
|
660
659
|
end
|
661
660
|
|
662
661
|
def test_should_pass_both_arguments_and_blocks_through
|
663
|
-
assert_equal [1, 2], @state.call(@object, :speed, 1) {2}
|
662
|
+
assert_equal [1, 2], @state.call(@object, :speed, lambda {}, 1) {2}
|
664
663
|
end
|
665
664
|
end
|
666
665
|
|
@@ -682,15 +681,15 @@ begin
|
|
682
681
|
end
|
683
682
|
|
684
683
|
def test_should_use_ellipse_shape
|
685
|
-
assert_equal 'ellipse', @node['shape']
|
684
|
+
assert_equal 'ellipse', @node['shape'].to_s.gsub('"', '')
|
686
685
|
end
|
687
686
|
|
688
687
|
def test_should_set_width_to_one
|
689
|
-
assert_equal '1', @node['width']
|
688
|
+
assert_equal '1', @node['width'].to_s.gsub('"', '')
|
690
689
|
end
|
691
690
|
|
692
691
|
def test_should_set_height_to_one
|
693
|
-
assert_equal '1', @node['height']
|
692
|
+
assert_equal '1', @node['height'].to_s.gsub('"', '')
|
694
693
|
end
|
695
694
|
|
696
695
|
def test_should_use_stringified_name_as_name
|
@@ -698,7 +697,7 @@ begin
|
|
698
697
|
end
|
699
698
|
|
700
699
|
def test_should_use_description_as_label
|
701
|
-
assert_equal 'parked (1)', @node['label']
|
700
|
+
assert_equal 'parked (1)', @node['label'].to_s.gsub('"', '')
|
702
701
|
end
|
703
702
|
end
|
704
703
|
|
@@ -715,7 +714,7 @@ begin
|
|
715
714
|
end
|
716
715
|
|
717
716
|
def test_should_use_ellipse_as_shape
|
718
|
-
assert_equal 'ellipse', @node['shape']
|
717
|
+
assert_equal 'ellipse', @node['shape'].to_s.gsub('"', '')
|
719
718
|
end
|
720
719
|
|
721
720
|
def test_should_draw_edge_between_point_and_state
|
@@ -738,7 +737,7 @@ begin
|
|
738
737
|
end
|
739
738
|
|
740
739
|
def test_should_use_description_as_label
|
741
|
-
assert_equal 'nil', @node['label']
|
740
|
+
assert_equal 'nil', @node['label'].to_s.gsub('"', '')
|
742
741
|
end
|
743
742
|
end
|
744
743
|
|
@@ -756,7 +755,7 @@ begin
|
|
756
755
|
end
|
757
756
|
|
758
757
|
def test_should_use_description_as_label
|
759
|
-
assert_equal 'parked (*)', @node['label']
|
758
|
+
assert_equal 'parked (*)', @node['label'].to_s.gsub('"', '')
|
760
759
|
end
|
761
760
|
end
|
762
761
|
|
@@ -773,7 +772,7 @@ begin
|
|
773
772
|
end
|
774
773
|
|
775
774
|
def test_should_use_ellipse_as_shape
|
776
|
-
assert_equal 'ellipse', @node['shape']
|
775
|
+
assert_equal 'ellipse', @node['shape'].to_s.gsub('"', '')
|
777
776
|
end
|
778
777
|
end
|
779
778
|
|
@@ -787,7 +786,7 @@ begin
|
|
787
786
|
end
|
788
787
|
|
789
788
|
def test_should_use_doublecircle_as_shape
|
790
|
-
assert_equal 'doublecircle', @node['shape']
|
789
|
+
assert_equal 'doublecircle', @node['shape'].to_s.gsub('"', '')
|
791
790
|
end
|
792
791
|
end
|
793
792
|
rescue LoadError
|