RSokoban 0.71

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.
@@ -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