RSokoban 0.71

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,88 @@
1
+
2
+ class TC_LevelLoader < Test::Unit::TestCase
3
+
4
+ def setup
5
+ $RSOKOBAN_DATA_PATH = File.expand_path(File.dirname(__FILE__))
6
+ end
7
+
8
+ def test_instance
9
+ ins = RSokoban::LevelLoader.new "original.xsb"
10
+ assert_equal true, ins.instance_of?(RSokoban::LevelLoader)
11
+ end
12
+
13
+ def test_NoFileError
14
+ assert_raise(RSokoban::NoFileError) do
15
+ ins = RSokoban::LevelLoader.new "inexistant"
16
+ end
17
+ end
18
+
19
+ def test_title_of_set
20
+ ins = RSokoban::LevelLoader.new "test_file1.xsb"
21
+ assert_equal 'test level', ins.set.title
22
+ end
23
+
24
+ def test_description_of_set
25
+ ins = RSokoban::LevelLoader.new "test_file1.xsb"
26
+ assert_equal "one simple level to test\n", ins.set.description
27
+ end
28
+
29
+ def test_picture
30
+ ins = RSokoban::LevelLoader.new "test_file1.xsb"
31
+ expected = [ '#####',
32
+ '#.$@#',
33
+ '#####']
34
+ assert_equal expected, ins.set.rawLevels[0].picture
35
+ end
36
+
37
+ def test_title_of_level
38
+ ins = RSokoban::LevelLoader.new "test_file1.xsb"
39
+ assert_equal "1", ins.set.rawLevels[0].title
40
+ end
41
+
42
+ def test_level_1
43
+ ins = RSokoban::LevelLoader.new "test_file2.xsb"
44
+ level = RSokoban::Level.new(RSokoban::RawLevel.new('1', ['#####', '#.$@#', '#####']))
45
+ assert_equal level, ins.level(1)
46
+ end
47
+
48
+ def test_level_2
49
+ ins = RSokoban::LevelLoader.new "test_file2.xsb"
50
+ level = RSokoban::Level.new(RSokoban::RawLevel.new('2', ['######', '#. $@#', '######']))
51
+ assert_equal level, ins.level(2)
52
+ end
53
+
54
+ def test_level_3
55
+ ins = RSokoban::LevelLoader.new "test_file2.xsb"
56
+ level = RSokoban::Level.new(RSokoban::RawLevel.new('3', ['#####', '# #', '#$ #', '#. @#', '#####' ]))
57
+ assert_equal level, ins.level(3)
58
+ end
59
+
60
+ def test_level_4_title
61
+ ins = RSokoban::LevelLoader.new "test_file2.xsb"
62
+ assert_equal '4', ins.level(4).title
63
+ end
64
+
65
+ def test_level_5_title
66
+ ins = RSokoban::LevelLoader.new "test_file2.xsb"
67
+ assert_equal '5', ins.level(5).title
68
+ end
69
+
70
+ def test_level_6_title
71
+ ins = RSokoban::LevelLoader.new "test_file2.xsb"
72
+ assert_equal '6', ins.level(6).title
73
+ end
74
+
75
+ def test_level_6
76
+ ins = RSokoban::LevelLoader.new "test_file2.xsb"
77
+ level = RSokoban::Level.new(RSokoban::RawLevel.new('6', ['#####', '#.$@#', '#####']))
78
+ assert_equal level, ins.level(6)
79
+ end
80
+
81
+ def test_level_number_that_doesnt_exist
82
+ ins = RSokoban::LevelLoader.new "test_file2.xsb"
83
+ assert_raise(RSokoban::LevelNumberTooHighError) do
84
+ assert_equal '99', ins.level(99).title
85
+ end
86
+ end
87
+
88
+ end
@@ -0,0 +1,42 @@
1
+
2
+ class TC_LevelSet < Test::Unit::TestCase
3
+
4
+ def test_instance
5
+ ins = RSokoban::LevelSet.new
6
+ assert_equal true, ins.instance_of?(RSokoban::LevelSet)
7
+ end
8
+
9
+ def test_title_accessors
10
+ ins = RSokoban::LevelSet.new
11
+ ins.title = "Le titre"
12
+ assert_equal "Le titre", ins.title
13
+ end
14
+
15
+ def test_default_title
16
+ ins = RSokoban::LevelSet.new
17
+ assert_equal 'Unknown set title', ins.title
18
+ end
19
+
20
+ def test_description_accessors
21
+ ins = RSokoban::LevelSet.new
22
+ ins.description = "description"
23
+ assert_equal "description", ins.description
24
+ end
25
+
26
+ def test_default_description
27
+ ins = RSokoban::LevelSet.new
28
+ assert_equal 'Empty description', ins.description
29
+ end
30
+
31
+ def test_raw_levels_list_accessors
32
+ ins = RSokoban::LevelSet.new
33
+ list = [].push(RSokoban::RawLevel.new('title', ['###']))
34
+ ins.rawLevels = list
35
+ assert_equal list, ins.rawLevels
36
+ end
37
+
38
+ def test_default_raw_levels_list
39
+ ins = RSokoban::LevelSet.new
40
+ assert_equal [], ins.rawLevels
41
+ end
42
+ end
data/test/tc_man.rb ADDED
@@ -0,0 +1,55 @@
1
+
2
+ class TC_Man < Test::Unit::TestCase
3
+
4
+ def testInstance
5
+ ins = RSokoban::Man.new 12, 3
6
+ assert_equal true, ins.instance_of?(RSokoban::Man)
7
+ end
8
+
9
+ def testXY
10
+ ins = RSokoban::Man.new 12, 3
11
+ assert_equal 12, ins.x
12
+ assert_equal 3, ins.y
13
+ end
14
+
15
+ def testUp
16
+ pos = RSokoban::Man.new 12, 3
17
+ pos.up
18
+ assert_equal 12, pos.x
19
+ assert_equal 2, pos.y
20
+ end
21
+
22
+ def testDown
23
+ pos = RSokoban::Man.new 12, 3
24
+ pos.down
25
+ assert_equal 12, pos.x
26
+ assert_equal 4, pos.y
27
+ end
28
+
29
+ def testLeft
30
+ pos = RSokoban::Man.new 12, 3
31
+ pos.left
32
+ assert_equal 11, pos.x
33
+ assert_equal 3, pos.y
34
+ end
35
+
36
+ def testRight
37
+ pos = RSokoban::Man.new 12, 3
38
+ pos.right
39
+ assert_equal 13, pos.x
40
+ assert_equal 3, pos.y
41
+ end
42
+
43
+ def testEqual
44
+ pos1 = RSokoban::Man.new 99, 98
45
+ pos2 = RSokoban::Man.new 99, 98
46
+ assert pos1 == pos2
47
+ end
48
+
49
+ def testNotEqual
50
+ pos1 = RSokoban::Man.new 99, 98
51
+ pos2 = RSokoban::Man.new 19, 18
52
+ assert pos1 != pos2
53
+ end
54
+
55
+ end
@@ -0,0 +1,41 @@
1
+ require "../lib/rsokoban/moveable"
2
+
3
+ class TC_Moveable < Test::Unit::TestCase
4
+
5
+ class Foo
6
+ include RSokoban::Moveable
7
+ attr_reader :x, :y
8
+ def initialize
9
+ @x = 12
10
+ @y = 3
11
+ end
12
+ end
13
+
14
+ def testUp
15
+ pos = Foo.new
16
+ pos.up
17
+ assert_equal 12, pos.x
18
+ assert_equal 2, pos.y
19
+ end
20
+
21
+ def testDown
22
+ pos = Foo.new
23
+ pos.down
24
+ assert_equal 12, pos.x
25
+ assert_equal 4, pos.y
26
+ end
27
+
28
+ def testLeft
29
+ pos = Foo.new
30
+ pos.left
31
+ assert_equal 11, pos.x
32
+ assert_equal 3, pos.y
33
+ end
34
+
35
+ def testRight
36
+ pos = Foo.new
37
+ pos.right
38
+ assert_equal 13, pos.x
39
+ assert_equal 3, pos.y
40
+ end
41
+ end
@@ -0,0 +1,75 @@
1
+
2
+ class TC_Position < Test::Unit::TestCase
3
+
4
+ def testInstance
5
+ pos = RSokoban::Position.new
6
+ assert_equal true, pos.instance_of?(RSokoban::Position)
7
+ end
8
+
9
+ def testXYForDefaultPositions
10
+ pos = RSokoban::Position.new
11
+ assert_equal 0, pos.x
12
+ assert_equal 0, pos.y
13
+ end
14
+
15
+ def testXY
16
+ pos = RSokoban::Position.new 12, 3
17
+ assert_equal 12, pos.x
18
+ assert_equal 3, pos.y
19
+ end
20
+
21
+ def testEqualityForDefaultPositions
22
+ pos1 = RSokoban::Position.new
23
+ pos2 = RSokoban::Position.new
24
+ assert pos1 == pos2
25
+ end
26
+
27
+ def testEqlForDefaultPositions
28
+ pos1 = RSokoban::Position.new
29
+ pos2 = RSokoban::Position.new
30
+ assert pos1.eql?(pos2)
31
+ end
32
+
33
+ def testEqualityForTwoDifferentPositions
34
+ pos1 = RSokoban::Position.new
35
+ pos2 = RSokoban::Position.new 0, 1
36
+ assert_equal false, pos1 == pos2
37
+ end
38
+
39
+ def testEquality
40
+ pos1 = RSokoban::Position.new 1, 2
41
+ pos2 = RSokoban::Position.new 1, 2
42
+ assert pos1 == pos2
43
+ end
44
+
45
+ def testEqualityWithWrongObject
46
+ pos1 = RSokoban::Position.new
47
+ pos2 = Object.new
48
+ assert_equal false, pos1 == pos2
49
+ end
50
+
51
+ def testEqlForTwoDifferentPositions
52
+ pos1 = RSokoban::Position.new
53
+ pos2 = RSokoban::Position.new 0, 1
54
+ assert_equal false, pos1.eql?(pos2)
55
+ end
56
+
57
+ def testEql
58
+ pos1 = RSokoban::Position.new 1, 2
59
+ pos2 = RSokoban::Position.new 1, 2
60
+ assert pos1.eql?(pos2)
61
+ end
62
+
63
+ def testEqlWithWrongObject
64
+ pos1 = RSokoban::Position.new
65
+ pos2 = Object.new
66
+ assert_equal false, pos1.eql?(pos2)
67
+ end
68
+
69
+ def testNotEqual
70
+ pos1 = RSokoban::Position.new 11, 12
71
+ pos2 = RSokoban::Position.new 1, 2
72
+ assert pos1 != pos2
73
+ end
74
+
75
+ end
@@ -0,0 +1,35 @@
1
+
2
+ class TC_RawLevel < Test::Unit::TestCase
3
+
4
+ def test_instance
5
+ ins = RSokoban::RawLevel.new
6
+ assert_equal true, ins.instance_of?(RSokoban::RawLevel)
7
+ end
8
+
9
+ def test_title_accessors
10
+ ins = RSokoban::RawLevel.new
11
+ ins.title = "Le titre"
12
+ assert_equal "Le titre", ins.title
13
+ end
14
+
15
+ def test_default_title
16
+ ins = RSokoban::RawLevel.new
17
+ assert_equal 'Unknown level title', ins.title
18
+ end
19
+
20
+ Picture1 = [ '#####',
21
+ '#.$@#',
22
+ '#####']
23
+
24
+ def test_picture_accessors
25
+ ins = RSokoban::RawLevel.new
26
+ ins.picture = Picture1
27
+ assert_equal Picture1, ins.picture
28
+ end
29
+
30
+ def test_default_picture
31
+ ins = RSokoban::RawLevel.new
32
+ assert_equal [], ins.picture
33
+ end
34
+
35
+ end
data/test/test.rb ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
4
+ require "rsokoban"
5
+
6
+ require "test/unit"
7
+
8
+ require "../test/tc_level"
9
+ require "../test/tc_level_loader"
10
+ require "../test/tc_level_set"
11
+ require "../test/tc_raw_level"
12
+ require "../test/tc_position"
13
+ require "../test/tc_moveable"
14
+ require "../test/tc_man"
15
+ require "../test/ui/tc_console"
16
+
@@ -0,0 +1,9 @@
1
+ ; test level
2
+
3
+ ; one simple level to test
4
+
5
+ #####
6
+ #.$@#
7
+ #####
8
+ ; 1
9
+ ;
@@ -0,0 +1,49 @@
1
+ ; another test file
2
+
3
+ ; 6 levels
4
+ ; blablabla
5
+ ; bla
6
+
7
+ #####
8
+ #.$@#
9
+ #####
10
+ ; 1
11
+ ; blabla
12
+
13
+ ######
14
+ #. $@#
15
+ ######
16
+ ; 2
17
+
18
+ #####
19
+ # #
20
+ #$ #
21
+ #. @#
22
+ #####
23
+ ; 3
24
+
25
+ ######
26
+ #.$ #
27
+ #.$ #
28
+ #.$ @#
29
+ ######
30
+ ; 4
31
+
32
+ #####
33
+ # #
34
+ #$ #
35
+ ### $##
36
+ # $ $ #
37
+ ### # ## # ######
38
+ # # ## ##### ..#
39
+ # $ $ ..#
40
+ ##### ### #@## ..#
41
+ # #########
42
+ #######
43
+ ; 5
44
+ ; Original level 1 from Thinking Rabbits
45
+
46
+ #####
47
+ #.$@#
48
+ #####
49
+ ; 6
@@ -0,0 +1,75 @@
1
+ require 'rsokoban/ui/console'
2
+ class TC_Console < Test::Unit::TestCase
3
+
4
+ def setup
5
+ @console = RSokoban::UI::Console.new
6
+ # Console#parse is private, make it public for testing purpose.
7
+ def @console.public_parse(*args)
8
+ parse(*args)
9
+ end
10
+ end
11
+
12
+ def test_string_quit_must_returns_symbol_quit
13
+ assert_equal :quit, @console.public_parse('quit')
14
+ end
15
+
16
+ def test_string_help_must_returns_symbol_help
17
+ assert_equal :help, @console.public_parse('help')
18
+ end
19
+
20
+ def test_string_retry_must_returns_symbol_retry
21
+ assert_equal :retry, @console.public_parse('retry')
22
+ end
23
+
24
+ def test_string_up_must_returns_symbol_up
25
+ assert_equal :up, @console.public_parse('up')
26
+ end
27
+
28
+ def test_string_down_must_returns_symbol_down
29
+ assert_equal :down, @console.public_parse('down')
30
+ end
31
+
32
+ def test_string_right_must_returns_symbol_right
33
+ assert_equal :right, @console.public_parse('right')
34
+ end
35
+
36
+ def test_string_left_must_returns_symbol_left
37
+ assert_equal :left, @console.public_parse('left')
38
+ end
39
+
40
+ def test_string_z_must_returns_symbol_up
41
+ assert_equal :up, @console.public_parse('z')
42
+ end
43
+
44
+ def test_string_s_must_returns_symbol_down
45
+ assert_equal :down, @console.public_parse('s')
46
+ end
47
+
48
+ def test_string_q_must_returns_symbol_left
49
+ assert_equal :left, @console.public_parse('q')
50
+ end
51
+
52
+ def test_string_d_must_returns_symbol_right
53
+ assert_equal :right, @console.public_parse('d')
54
+ end
55
+
56
+ def test_string_representing_a_number_must_returns_this_number
57
+ assert_equal 12, @console.public_parse("12")
58
+ end
59
+
60
+ def test_must_return_nil_if_number_is_negative
61
+ assert_equal nil, @console.public_parse("-12")
62
+ end
63
+
64
+ def test_must_return_nil_if_number_is_zero
65
+ assert_equal nil, @console.public_parse("0")
66
+ end
67
+
68
+ def test_xsb_filename_must_returns_itself
69
+ assert_equal 'some_levels.xsb', @console.public_parse("some_levels.xsb")
70
+ end
71
+
72
+ def test_anything_else_must_returns_nil
73
+ assert_equal nil, @console.public_parse('azerty')
74
+ end
75
+ end
metadata ADDED
@@ -0,0 +1,102 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: RSokoban
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 71
8
+ version: "0.71"
9
+ platform: ruby
10
+ authors:
11
+ - Xavier Nayrac
12
+ autorequire:
13
+ bindir: bin
14
+ cert_chain: []
15
+
16
+ date: 2011-01-21 00:00:00 +01:00
17
+ default_executable:
18
+ dependencies: []
19
+
20
+ description: |-
21
+ RSokoban is a clone of the famous Sokoban game.
22
+ I wrote this program just to improve my skills in Ruby. Currently, you can play only in a console window.
23
+ Enjoy the game !
24
+ email: xavier.nayrac@gmail.com
25
+ executables:
26
+ - rsokoban
27
+ extensions: []
28
+
29
+ extra_rdoc_files: []
30
+
31
+ files:
32
+ - lib/rsokoban.rb
33
+ - lib/rsokoban/game.rb
34
+ - lib/rsokoban/option.rb
35
+ - lib/rsokoban/exception.rb
36
+ - lib/rsokoban/crate.rb
37
+ - lib/rsokoban/storage.rb
38
+ - lib/rsokoban/moveable.rb
39
+ - lib/rsokoban/ui/curses_console.rb
40
+ - lib/rsokoban/ui/ui.rb
41
+ - lib/rsokoban/ui/console.rb
42
+ - lib/rsokoban/level_loader.rb
43
+ - lib/rsokoban/raw_level.rb
44
+ - lib/rsokoban/position.rb
45
+ - lib/rsokoban/level.rb
46
+ - lib/rsokoban/level_set.rb
47
+ - lib/rsokoban/man.rb
48
+ - bin/rsokoban
49
+ - data/original.xsb
50
+ - data/test.xsb
51
+ - data/microban.xsb
52
+ - README.rdoc
53
+ - TODO
54
+ - COPYING
55
+ - test/test_file1.xsb
56
+ - test/tc_level_loader.rb
57
+ - test/test_file2.xsb
58
+ - test/tc_level.rb
59
+ - test/tc_position.rb
60
+ - test/original.xsb
61
+ - test/ui/tc_console.rb
62
+ - test/tc_raw_level.rb
63
+ - test/tc_man.rb
64
+ - test/test.rb
65
+ - test/tc_moveable.rb
66
+ - test/tc_level_set.rb
67
+ has_rdoc: true
68
+ homepage: https://github.com/lkdjiin/RSokoban/wiki
69
+ licenses:
70
+ - GPL-3
71
+ post_install_message:
72
+ rdoc_options: []
73
+
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ none: false
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ segments:
82
+ - 1
83
+ - 9
84
+ - 0
85
+ version: 1.9.0
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ segments:
92
+ - 0
93
+ version: "0"
94
+ requirements: []
95
+
96
+ rubyforge_project:
97
+ rubygems_version: 1.3.7
98
+ signing_key:
99
+ specification_version: 3
100
+ summary: Clone of the Sokoban game.
101
+ test_files:
102
+ - test/test.rb