RSokoban 0.71 → 0.73

Sign up to get free protection for your applications and to get access to all the features.
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