RSokoban 0.71 → 0.73

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.
Files changed (50) hide show
  1. data/NEWS +22 -0
  2. data/README.rdoc +19 -19
  3. data/RSokoban-0.73.gem +0 -0
  4. data/TODO +25 -18
  5. data/VERSION +1 -0
  6. data/bin/rsokoban +65 -1
  7. data/lib/rsokoban/exception.rb +4 -0
  8. data/lib/rsokoban/game.rb +42 -29
  9. data/lib/rsokoban/level.rb +67 -30
  10. data/lib/rsokoban/level_loader.rb +4 -4
  11. data/lib/rsokoban/level_set.rb +20 -10
  12. data/lib/rsokoban/map.rb +51 -0
  13. data/lib/rsokoban/move_recorder.rb +38 -0
  14. data/lib/rsokoban/option.rb +29 -12
  15. data/lib/rsokoban/raw_level.rb +15 -4
  16. data/lib/rsokoban/ui/base_ui.rb +37 -0
  17. data/lib/rsokoban/ui/console.rb +43 -33
  18. data/lib/rsokoban/ui/curses_console.rb +45 -36
  19. data/lib/rsokoban/ui/player_action.rb +74 -0
  20. data/lib/rsokoban/ui/tk_ui.rb +474 -0
  21. data/lib/rsokoban/ui.rb +10 -0
  22. data/lib/rsokoban.rb +4 -5
  23. data/skins/default/crate.bmp +0 -0
  24. data/skins/default/crate_store.bmp +0 -0
  25. data/skins/default/floor.bmp +0 -0
  26. data/skins/default/man_down.bmp +0 -0
  27. data/skins/default/man_left.bmp +0 -0
  28. data/skins/default/man_right.bmp +0 -0
  29. data/skins/default/man_store_down.bmp +0 -0
  30. data/skins/default/man_store_left.bmp +0 -0
  31. data/skins/default/man_store_right.bmp +0 -0
  32. data/skins/default/man_store_up.bmp +0 -0
  33. data/skins/default/man_up.bmp +0 -0
  34. data/skins/default/outside.bmp +0 -0
  35. data/skins/default/readme +1 -0
  36. data/skins/default/store.bmp +0 -0
  37. data/skins/default/wall.bmp +0 -0
  38. data/test/original.xsb +0 -2
  39. data/test/tc_level.rb +37 -37
  40. data/test/tc_level_loader.rb +14 -2
  41. data/test/tc_level_set.rb +8 -0
  42. data/test/tc_map.rb +40 -0
  43. data/test/tc_move_recorder.rb +100 -0
  44. data/test/tc_raw_level.rb +5 -5
  45. data/test/test.rb +3 -1
  46. data/test/test_file2.xsb +2 -0
  47. data/test/ui/tc_console.rb +27 -13
  48. data/test/ui/tc_player_action.rb +156 -0
  49. metadata +38 -25
  50. data/lib/rsokoban/ui/ui.rb +0 -44
data/test/tc_level.rb CHANGED
@@ -148,7 +148,7 @@ class TC_Level < Test::Unit::TestCase
148
148
 
149
149
  def test_rawLevel
150
150
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', Level1))
151
- assert_equal Level1, ins.picture
151
+ assert_equal Level1, ins.map
152
152
  end
153
153
 
154
154
  Level1_u = [' #####',
@@ -166,7 +166,7 @@ class TC_Level < Test::Unit::TestCase
166
166
  def test_rawLevel_after_move_up
167
167
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', Level1))
168
168
  ins.move :up
169
- assert_equal Level1_u, ins.picture
169
+ assert_equal Level1_u, ins.map
170
170
  end
171
171
 
172
172
  Text4 = [ '####',
@@ -202,7 +202,7 @@ class TC_Level < Test::Unit::TestCase
202
202
  def test_AfterMoveUp1
203
203
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CanMoveUp1))
204
204
  ins.moveUp
205
- assert_equal AfterMoveUp1, ins.picture
205
+ assert_equal AfterMoveUp1, ins.map
206
206
  end
207
207
 
208
208
  CanMoveUp2 = ['###',
@@ -225,7 +225,7 @@ class TC_Level < Test::Unit::TestCase
225
225
  def test_AfterMoveUp2
226
226
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CanMoveUp2))
227
227
  ins.moveUp
228
- assert_equal AfterMoveUp2, ins.picture
228
+ assert_equal AfterMoveUp2, ins.map
229
229
  end
230
230
 
231
231
  CanMoveUp3 = ['###',
@@ -250,7 +250,7 @@ class TC_Level < Test::Unit::TestCase
250
250
  def test_AfterMoveUp3
251
251
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CanMoveUp3))
252
252
  ins.moveUp
253
- assert_equal AfterMoveUp3, ins.picture
253
+ assert_equal AfterMoveUp3, ins.map
254
254
  end
255
255
 
256
256
  CanMoveUp4 = ['###',
@@ -275,7 +275,7 @@ class TC_Level < Test::Unit::TestCase
275
275
  def test_AfterMoveUp4
276
276
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CanMoveUp4))
277
277
  ins.moveUp
278
- assert_equal AfterMoveUp4, ins.picture
278
+ assert_equal AfterMoveUp4, ins.map
279
279
  end
280
280
 
281
281
  CannotMoveUp1 = ['###',
@@ -285,7 +285,7 @@ class TC_Level < Test::Unit::TestCase
285
285
  def test_CannotMoveUp1
286
286
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveUp1))
287
287
  assert_equal 'ERROR wall', ins.moveUp
288
- assert_equal CannotMoveUp1, ins.picture
288
+ assert_equal CannotMoveUp1, ins.map
289
289
  end
290
290
 
291
291
  CannotMoveUp2 = ['###',
@@ -296,7 +296,7 @@ class TC_Level < Test::Unit::TestCase
296
296
  def test_CannotMoveUp2
297
297
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveUp2))
298
298
  assert_equal 'ERROR wall behind crate', ins.moveUp
299
- assert_equal CannotMoveUp2, ins.picture
299
+ assert_equal CannotMoveUp2, ins.map
300
300
  end
301
301
 
302
302
  CannotMoveUp3 = ['###',
@@ -309,7 +309,7 @@ class TC_Level < Test::Unit::TestCase
309
309
  def test_CannotMoveUp3
310
310
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveUp3))
311
311
  assert_equal 'ERROR double crate', ins.moveUp
312
- assert_equal CannotMoveUp3, ins.picture
312
+ assert_equal CannotMoveUp3, ins.map
313
313
  end
314
314
 
315
315
  CannotMoveUp4 = ['###',
@@ -322,7 +322,7 @@ class TC_Level < Test::Unit::TestCase
322
322
  def test_CannotMoveUp4
323
323
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveUp4))
324
324
  assert_equal 'ERROR double crate', ins.moveUp
325
- assert_equal CannotMoveUp4, ins.picture
325
+ assert_equal CannotMoveUp4, ins.map
326
326
  end
327
327
 
328
328
  CannotMoveUp5 = ['###',
@@ -335,7 +335,7 @@ class TC_Level < Test::Unit::TestCase
335
335
  def test_CannotMoveUp5
336
336
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveUp5))
337
337
  assert_equal 'ERROR double crate', ins.moveUp
338
- assert_equal CannotMoveUp5, ins.picture
338
+ assert_equal CannotMoveUp5, ins.map
339
339
  end
340
340
 
341
341
  CannotMoveUp6 = ['###',
@@ -348,7 +348,7 @@ class TC_Level < Test::Unit::TestCase
348
348
  def test_CannotMoveUp6
349
349
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveUp6))
350
350
  assert_equal 'ERROR double crate', ins.moveUp
351
- assert_equal CannotMoveUp6, ins.picture
351
+ assert_equal CannotMoveUp6, ins.map
352
352
  end
353
353
 
354
354
  ### Move down ##############################################
@@ -371,7 +371,7 @@ class TC_Level < Test::Unit::TestCase
371
371
  def test_AfterMoveDown1
372
372
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CanMoveDown1))
373
373
  ins.moveDown
374
- assert_equal AfterMoveDown1, ins.picture
374
+ assert_equal AfterMoveDown1, ins.map
375
375
  end
376
376
 
377
377
  CanMoveDown2 = ['###',
@@ -392,7 +392,7 @@ class TC_Level < Test::Unit::TestCase
392
392
  def test_AfterMoveDown2
393
393
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CanMoveDown2))
394
394
  ins.moveDown
395
- assert_equal AfterMoveDown2, ins.picture
395
+ assert_equal AfterMoveDown2, ins.map
396
396
  end
397
397
 
398
398
  CanMoveDown3 = ['###',
@@ -415,7 +415,7 @@ class TC_Level < Test::Unit::TestCase
415
415
  def test_AfterMoveDown3
416
416
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CanMoveDown3))
417
417
  ins.moveDown
418
- assert_equal AfterMoveDown3, ins.picture
418
+ assert_equal AfterMoveDown3, ins.map
419
419
  end
420
420
 
421
421
  CanMoveDown4 = ['###',
@@ -438,7 +438,7 @@ class TC_Level < Test::Unit::TestCase
438
438
  def test_AfterMoveDown4
439
439
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CanMoveDown4))
440
440
  ins.moveDown
441
- assert_equal AfterMoveDown4, ins.picture
441
+ assert_equal AfterMoveDown4, ins.map
442
442
  end
443
443
 
444
444
  CannotMoveDown1 = ['###',
@@ -448,7 +448,7 @@ class TC_Level < Test::Unit::TestCase
448
448
  def test_CannotMoveDown1
449
449
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveDown1))
450
450
  assert_equal 'ERROR wall', ins.moveDown
451
- assert_equal CannotMoveDown1, ins.picture
451
+ assert_equal CannotMoveDown1, ins.map
452
452
  end
453
453
 
454
454
  CannotMoveDown2 = ['###',
@@ -459,7 +459,7 @@ class TC_Level < Test::Unit::TestCase
459
459
  def test_CannotMoveDown2
460
460
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveDown2))
461
461
  assert_equal 'ERROR wall behind crate', ins.moveDown
462
- assert_equal CannotMoveDown2, ins.picture
462
+ assert_equal CannotMoveDown2, ins.map
463
463
  end
464
464
 
465
465
  CannotMoveDown3 = ['###',
@@ -472,7 +472,7 @@ class TC_Level < Test::Unit::TestCase
472
472
  def test_CannotMoveDown3
473
473
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveDown3))
474
474
  assert_equal 'ERROR double crate', ins.moveDown
475
- assert_equal CannotMoveDown3, ins.picture
475
+ assert_equal CannotMoveDown3, ins.map
476
476
  end
477
477
 
478
478
  CannotMoveDown4 = ['###',
@@ -485,7 +485,7 @@ class TC_Level < Test::Unit::TestCase
485
485
  def test_CannotMoveDown4
486
486
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveDown4))
487
487
  assert_equal 'ERROR double crate', ins.moveDown
488
- assert_equal CannotMoveDown4, ins.picture
488
+ assert_equal CannotMoveDown4, ins.map
489
489
  end
490
490
 
491
491
  CannotMoveDown5 = ['###',
@@ -498,7 +498,7 @@ class TC_Level < Test::Unit::TestCase
498
498
  def test_CannotMoveDown5
499
499
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveDown5))
500
500
  assert_equal 'ERROR double crate', ins.moveDown
501
- assert_equal CannotMoveDown5, ins.picture
501
+ assert_equal CannotMoveDown5, ins.map
502
502
  end
503
503
 
504
504
  CannotMoveDown6 = ['###',
@@ -511,7 +511,7 @@ class TC_Level < Test::Unit::TestCase
511
511
  def test_CannotMoveDown6
512
512
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveDown6))
513
513
  assert_equal 'ERROR double crate', ins.moveDown
514
- assert_equal CannotMoveDown6, ins.picture
514
+ assert_equal CannotMoveDown6, ins.map
515
515
  end
516
516
 
517
517
  ### Move left ##############################################
@@ -532,7 +532,7 @@ class TC_Level < Test::Unit::TestCase
532
532
  def test_AfterMoveLeft1
533
533
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CanMoveLeft1))
534
534
  ins.moveLeft
535
- assert_equal AfterMoveLeft1, ins.picture
535
+ assert_equal AfterMoveLeft1, ins.map
536
536
  end
537
537
 
538
538
  CanMoveLeft2 = ['####',
@@ -551,7 +551,7 @@ class TC_Level < Test::Unit::TestCase
551
551
  def test_AfterMoveLeft2
552
552
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CanMoveLeft2))
553
553
  ins.moveLeft
554
- assert_equal AfterMoveLeft2, ins.picture
554
+ assert_equal AfterMoveLeft2, ins.map
555
555
  end
556
556
 
557
557
  CanMoveLeft3 = ['#####',
@@ -570,7 +570,7 @@ class TC_Level < Test::Unit::TestCase
570
570
  def test_AfterMoveLeft3
571
571
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CanMoveLeft3))
572
572
  ins.moveLeft
573
- assert_equal AfterMoveLeft3, ins.picture
573
+ assert_equal AfterMoveLeft3, ins.map
574
574
  end
575
575
 
576
576
  CanMoveLeft4 = ['#####',
@@ -589,7 +589,7 @@ class TC_Level < Test::Unit::TestCase
589
589
  def test_AfterMoveLeft4
590
590
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CanMoveLeft4))
591
591
  ins.moveLeft
592
- assert_equal AfterMoveLeft4, ins.picture
592
+ assert_equal AfterMoveLeft4, ins.map
593
593
  end
594
594
 
595
595
  CannotMoveLeft1 = ['###',
@@ -599,7 +599,7 @@ class TC_Level < Test::Unit::TestCase
599
599
  def test_CannotMoveLeft1
600
600
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveLeft1))
601
601
  assert_equal 'ERROR wall', ins.moveLeft
602
- assert_equal CannotMoveLeft1, ins.picture
602
+ assert_equal CannotMoveLeft1, ins.map
603
603
  end
604
604
 
605
605
  CannotMoveLeft2 = ['####',
@@ -609,7 +609,7 @@ class TC_Level < Test::Unit::TestCase
609
609
  def test_CannotMoveLeft2
610
610
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveLeft2))
611
611
  assert_equal 'ERROR wall behind crate', ins.moveLeft
612
- assert_equal CannotMoveLeft2, ins.picture
612
+ assert_equal CannotMoveLeft2, ins.map
613
613
  end
614
614
 
615
615
  CannotMoveLeft3 = ['######',
@@ -619,7 +619,7 @@ class TC_Level < Test::Unit::TestCase
619
619
  def test_CannotMoveLeft3
620
620
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveLeft3))
621
621
  assert_equal 'ERROR double crate', ins.moveLeft
622
- assert_equal CannotMoveLeft3, ins.picture
622
+ assert_equal CannotMoveLeft3, ins.map
623
623
  end
624
624
 
625
625
  ### Move right ##############################################
@@ -640,7 +640,7 @@ class TC_Level < Test::Unit::TestCase
640
640
  def test_AfterMoveRight1
641
641
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CanMoveRight1))
642
642
  ins.moveRight
643
- assert_equal AfterMoveRight1, ins.picture
643
+ assert_equal AfterMoveRight1, ins.map
644
644
  end
645
645
 
646
646
  CanMoveRight2 = ['####',
@@ -659,7 +659,7 @@ class TC_Level < Test::Unit::TestCase
659
659
  def test_AfterMoveRight2
660
660
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CanMoveRight2))
661
661
  ins.moveRight
662
- assert_equal AfterMoveRight2, ins.picture
662
+ assert_equal AfterMoveRight2, ins.map
663
663
  end
664
664
 
665
665
  CanMoveRight3 = ['#####',
@@ -678,7 +678,7 @@ class TC_Level < Test::Unit::TestCase
678
678
  def test_AfterMoveRight3
679
679
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CanMoveRight3))
680
680
  ins.moveRight
681
- assert_equal AfterMoveRight3, ins.picture
681
+ assert_equal AfterMoveRight3, ins.map
682
682
  end
683
683
 
684
684
  CanMoveRight4 = ['#####',
@@ -697,7 +697,7 @@ class TC_Level < Test::Unit::TestCase
697
697
  def test_AfterMoveRight4
698
698
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CanMoveRight4))
699
699
  ins.moveRight
700
- assert_equal AfterMoveRight4, ins.picture
700
+ assert_equal AfterMoveRight4, ins.map
701
701
  end
702
702
 
703
703
  CannotMoveRight1 = ['###',
@@ -707,7 +707,7 @@ class TC_Level < Test::Unit::TestCase
707
707
  def test_CannotMoveRight1
708
708
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveRight1))
709
709
  assert_equal 'ERROR wall', ins.moveRight
710
- assert_equal CannotMoveRight1, ins.picture
710
+ assert_equal CannotMoveRight1, ins.map
711
711
  end
712
712
 
713
713
  CannotMoveRight2 = ['####',
@@ -717,7 +717,7 @@ class TC_Level < Test::Unit::TestCase
717
717
  def test_CannotMoveRight2
718
718
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveRight2))
719
719
  assert_equal 'ERROR wall behind crate', ins.moveRight
720
- assert_equal CannotMoveRight2, ins.picture
720
+ assert_equal CannotMoveRight2, ins.map
721
721
  end
722
722
 
723
723
  CannotMoveRight3 = ['######',
@@ -727,7 +727,7 @@ class TC_Level < Test::Unit::TestCase
727
727
  def test_CannotMoveRight3
728
728
  ins = RSokoban::Level.new(RSokoban::RawLevel.new('1', CannotMoveRight3))
729
729
  assert_equal 'ERROR double crate', ins.moveRight
730
- assert_equal CannotMoveRight3, ins.picture
730
+ assert_equal CannotMoveRight3, ins.map
731
731
  end
732
732
 
733
733
  ### WIN ########################################################
@@ -766,7 +766,7 @@ class TC_Level < Test::Unit::TestCase
766
766
  ins.addStorage
767
767
 
768
768
  # I need to be sure that coord 1, 1 is '*'
769
- assert_equal '#*#', ins.picture[1]
769
+ assert_equal '#*#', ins.map[1]
770
770
 
771
771
  assert_equal 'ERROR wall behind crate', ins.moveUp
772
772
  end
@@ -26,12 +26,12 @@ class TC_LevelLoader < Test::Unit::TestCase
26
26
  assert_equal "one simple level to test\n", ins.set.description
27
27
  end
28
28
 
29
- def test_picture
29
+ def test_map
30
30
  ins = RSokoban::LevelLoader.new "test_file1.xsb"
31
31
  expected = [ '#####',
32
32
  '#.$@#',
33
33
  '#####']
34
- assert_equal expected, ins.set.rawLevels[0].picture
34
+ assert_equal expected, ins.set.rawLevels[0].map
35
35
  end
36
36
 
37
37
  def test_title_of_level
@@ -85,4 +85,16 @@ class TC_LevelLoader < Test::Unit::TestCase
85
85
  end
86
86
  end
87
87
 
88
+ def test_get_size_of_set
89
+ ins = RSokoban::LevelLoader.new "original.xsb"
90
+ assert_equal 90, ins.set.size
91
+ end
92
+
93
+ # There was a bug where size was majored by one when the xsb file
94
+ # finish by several blank lines.
95
+ def test_get_size_of_set_buggy
96
+ ins = RSokoban::LevelLoader.new "test_file2.xsb"
97
+ assert_equal 6, ins.set.size
98
+ end
99
+
88
100
  end
data/test/tc_level_set.rb CHANGED
@@ -39,4 +39,12 @@ class TC_LevelSet < Test::Unit::TestCase
39
39
  ins = RSokoban::LevelSet.new
40
40
  assert_equal [], ins.rawLevels
41
41
  end
42
+
43
+ def test_get_size
44
+ ins = RSokoban::LevelSet.new
45
+ list = [].push(RSokoban::RawLevel.new('title', ['###']))
46
+ ins.rawLevels = list
47
+ assert_equal 1, ins.size
48
+ end
49
+
42
50
  end
data/test/tc_map.rb ADDED
@@ -0,0 +1,40 @@
1
+ class TC_Map < Test::Unit::TestCase
2
+
3
+ def setup
4
+ @map = RSokoban::Map.new
5
+ end
6
+
7
+ def test_default_picture_is_empy
8
+ assert_equal [], RSokoban::Map.new.rows
9
+ end
10
+
11
+ def test_assigning_rows
12
+ @map.rows = ['###', '# #', '###']
13
+ assert_equal ['###', '# #', '###'], @map.rows
14
+ end
15
+
16
+ def test_get_height
17
+ @map.rows = ['###', '# #', '###']
18
+ assert_equal 3, @map.height
19
+ end
20
+
21
+ def test_get_width
22
+ @map.rows = ['###', '####', '##']
23
+ assert_equal 4, @map.width
24
+ end
25
+
26
+ def test_get_a_row
27
+ @map.rows = ['###', '# #', '###']
28
+ assert_equal '# #', @map[1]
29
+ end
30
+
31
+ def test_each_row
32
+ @map.rows = ['#', '##', '###']
33
+ expected = '#'
34
+ @map.each {|row|
35
+ assert_equal expected, row
36
+ expected += '#'
37
+ }
38
+ end
39
+
40
+ end
@@ -0,0 +1,100 @@
1
+ class TC_MoveRecorder < Test::Unit::TestCase
2
+
3
+ def setup
4
+ @mr = RSokoban::MoveRecorder.new
5
+
6
+ # For testing purpose, add a method to reset the queue of moves.
7
+ def @mr.empty_for_testing
8
+ @queue = []
9
+ end
10
+
11
+ # For testing purpose, add a method to fill the queue of moves with known values.
12
+ def @mr.fill_for_testing list
13
+ @queue = list
14
+ end
15
+
16
+ # For testing purpose, add a method to get the queue of moves.
17
+ def @mr.get_for_testing
18
+ @queue
19
+ end
20
+ end
21
+
22
+ def test_create_instance
23
+ assert @mr.instance_of?(RSokoban::MoveRecorder)
24
+ end
25
+
26
+ def test_raise_exception_if_we_undo_an_empty_queue
27
+ @mr.empty_for_testing
28
+ assert_raise(RSokoban::EmptyMoveQueueError) do
29
+ @mr.undo
30
+ end
31
+ end
32
+
33
+ def test_record_up
34
+ @mr.empty_for_testing
35
+ @mr.record :up
36
+ assert_equal [:up], @mr.get_for_testing
37
+ end
38
+
39
+ def test_record_down
40
+ @mr.empty_for_testing
41
+ @mr.record :down
42
+ assert_equal [:down], @mr.get_for_testing
43
+ end
44
+
45
+ def test_record_left
46
+ @mr.empty_for_testing
47
+ @mr.record :left
48
+ assert_equal [:left], @mr.get_for_testing
49
+ end
50
+
51
+ def test_record_right
52
+ @mr.empty_for_testing
53
+ @mr.record :right
54
+ assert_equal [:right], @mr.get_for_testing
55
+ end
56
+
57
+
58
+ def test_record_up_and_push
59
+ @mr.empty_for_testing
60
+ @mr.record :up, :push
61
+ assert_equal [:UP], @mr.get_for_testing
62
+ end
63
+
64
+ def test_record_down_and_push
65
+ @mr.empty_for_testing
66
+ @mr.record :down, :push
67
+ assert_equal [:DOWN], @mr.get_for_testing
68
+ end
69
+
70
+ def test_record_left_and_push
71
+ @mr.empty_for_testing
72
+ @mr.record :left, :push
73
+ assert_equal [:LEFT], @mr.get_for_testing
74
+ end
75
+
76
+ def test_record_right_and_push
77
+ @mr.empty_for_testing
78
+ @mr.record :right, :push
79
+ assert_equal [:RIGHT], @mr.get_for_testing
80
+ end
81
+
82
+
83
+ def test_record_nothing_else_than_direction
84
+ assert_raise(ArgumentError) do
85
+ @mr.record :north
86
+ end
87
+ end
88
+
89
+ def test_undo_give_the_last_move
90
+ @mr.fill_for_testing [:up, :up, :left]
91
+ assert_equal :left, @mr.undo
92
+ end
93
+
94
+ def test_undo_diminish_the_queue
95
+ @mr.fill_for_testing [:up, :up, :left]
96
+ @mr.undo
97
+ assert_equal [:up, :up], @mr.get_for_testing
98
+ end
99
+
100
+ end
data/test/tc_raw_level.rb CHANGED
@@ -21,15 +21,15 @@ class TC_RawLevel < Test::Unit::TestCase
21
21
  '#.$@#',
22
22
  '#####']
23
23
 
24
- def test_picture_accessors
24
+ def test_map_accessors
25
25
  ins = RSokoban::RawLevel.new
26
- ins.picture = Picture1
27
- assert_equal Picture1, ins.picture
26
+ ins.map = Picture1
27
+ assert_equal Picture1, ins.map.rows
28
28
  end
29
29
 
30
- def test_default_picture
30
+ def test_default_map
31
31
  ins = RSokoban::RawLevel.new
32
- assert_equal [], ins.picture
32
+ assert_equal RSokoban::Map.new, ins.map
33
33
  end
34
34
 
35
35
  end
data/test/test.rb CHANGED
@@ -12,5 +12,7 @@ require "../test/tc_raw_level"
12
12
  require "../test/tc_position"
13
13
  require "../test/tc_moveable"
14
14
  require "../test/tc_man"
15
+ require "../test/tc_move_recorder"
16
+ require "../test/tc_map"
15
17
  require "../test/ui/tc_console"
16
-
18
+ require "../test/ui/tc_player_action"
data/test/test_file2.xsb CHANGED
@@ -47,3 +47,5 @@
47
47
  #.$@#
48
48
  #####
49
49
  ; 6
50
+
51
+
@@ -7,10 +7,13 @@ class TC_Console < Test::Unit::TestCase
7
7
  def @console.public_parse(*args)
8
8
  parse(*args)
9
9
  end
10
+
11
+ @pa = RSokoban::UI::PlayerAction.new
10
12
  end
11
13
 
12
14
  def test_string_quit_must_returns_symbol_quit
13
- assert_equal :quit, @console.public_parse('quit')
15
+ @pa.action = :quit
16
+ assert_equal @pa, @console.public_parse('quit')
14
17
  end
15
18
 
16
19
  def test_string_help_must_returns_symbol_help
@@ -18,43 +21,53 @@ class TC_Console < Test::Unit::TestCase
18
21
  end
19
22
 
20
23
  def test_string_retry_must_returns_symbol_retry
21
- assert_equal :retry, @console.public_parse('retry')
24
+ @pa.action = :retry
25
+ assert_equal @pa, @console.public_parse('retry')
22
26
  end
23
27
 
24
28
  def test_string_up_must_returns_symbol_up
25
- assert_equal :up, @console.public_parse('up')
29
+ @pa.action = :up
30
+ assert_equal @pa, @console.public_parse('up')
26
31
  end
27
32
 
28
33
  def test_string_down_must_returns_symbol_down
29
- assert_equal :down, @console.public_parse('down')
34
+ @pa.action = :down
35
+ assert_equal @pa, @console.public_parse('down')
30
36
  end
31
37
 
32
38
  def test_string_right_must_returns_symbol_right
33
- assert_equal :right, @console.public_parse('right')
39
+ @pa.action = :right
40
+ assert_equal @pa, @console.public_parse('right')
34
41
  end
35
42
 
36
43
  def test_string_left_must_returns_symbol_left
37
- assert_equal :left, @console.public_parse('left')
44
+ @pa.action = :left
45
+ assert_equal @pa, @console.public_parse('left')
38
46
  end
39
47
 
40
48
  def test_string_z_must_returns_symbol_up
41
- assert_equal :up, @console.public_parse('z')
49
+ @pa.action = :up
50
+ assert_equal @pa, @console.public_parse('z')
42
51
  end
43
52
 
44
53
  def test_string_s_must_returns_symbol_down
45
- assert_equal :down, @console.public_parse('s')
54
+ @pa.action = :down
55
+ assert_equal @pa, @console.public_parse('s')
46
56
  end
47
57
 
48
- def test_string_q_must_returns_symbol_left
49
- assert_equal :left, @console.public_parse('q')
58
+ def test_string_q_must_returns_action_left
59
+ @pa.action = :left
60
+ assert_equal @pa, @console.public_parse('q')
50
61
  end
51
62
 
52
63
  def test_string_d_must_returns_symbol_right
53
- assert_equal :right, @console.public_parse('d')
64
+ @pa.action = :right
65
+ assert_equal @pa, @console.public_parse('d')
54
66
  end
55
67
 
56
68
  def test_string_representing_a_number_must_returns_this_number
57
- assert_equal 12, @console.public_parse("12")
69
+ @pa.action = 12
70
+ assert_equal @pa, @console.public_parse("12")
58
71
  end
59
72
 
60
73
  def test_must_return_nil_if_number_is_negative
@@ -66,7 +79,8 @@ class TC_Console < Test::Unit::TestCase
66
79
  end
67
80
 
68
81
  def test_xsb_filename_must_returns_itself
69
- assert_equal 'some_levels.xsb', @console.public_parse("some_levels.xsb")
82
+ @pa.action = 'some_levels.xsb'
83
+ assert_equal @pa, @console.public_parse("some_levels.xsb")
70
84
  end
71
85
 
72
86
  def test_anything_else_must_returns_nil