osl 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aa47dc0d996fd2dbf774dd4158a7823b74a852f5
4
- data.tar.gz: 55bf9c91650afa603fd95ea6ba772e7c1f88d837
3
+ metadata.gz: c29e705dce452cc0e71abaf45afed179e0ad93b0
4
+ data.tar.gz: ac1a16b66e4ee44f37f0c2047e2d2fcf1a6ae454
5
5
  SHA512:
6
- metadata.gz: 2289f3568d9fb26d0af7eefa928b4e15744594a1890c8a2d287be63ebd6353d06d64679d54e362baa957a8b642de99faafe596a0dc33292858094c89dc3feacb
7
- data.tar.gz: 79e86f7e2c5bcdb1d9d409ae6f18de41a8bf79bbf5ccc2950e51ff90350ff5e29818224fe9328f16c5dd13354daf70451616eaac1d518ffb8aeda25aff08591f
6
+ metadata.gz: 9b4980c6140d971969dc0f192cfadf41ed7f4234800e79e7d2ba1b7ca4657dff8be65d6d4d48f051965337e84736df1697cbe2aaeec69d50b67e501f533fe32f
7
+ data.tar.gz: c2b231d25d5bcec3ca69218dbfdb7e1997e14e2c2472d8c2795d18f277d1ea6d3b8d54c5679fc37068fc487cd340be96c3d1834876a5d188135c448f35b05b09
data/NEWS.md ADDED
@@ -0,0 +1,18 @@
1
+ # NEWS
2
+
3
+ ## 0.0.2: 2013-08-29
4
+
5
+ Supported Piece class release!
6
+
7
+ ### Changes
8
+
9
+ * Improvements
10
+ * Added SimpleState#pieceAt.
11
+ * Supported osl::Piece.
12
+ * Added SimpleState as super-class on NumEffectState.
13
+ * Improved a check of format.
14
+ * Use nil for return-value if invalid move-format.
15
+
16
+ ## 0.0.1: 2013-08-20
17
+
18
+ Initial release!
data/README.md CHANGED
@@ -30,6 +30,18 @@ Or install it yourself as:
30
30
 
31
31
  See samples.
32
32
 
33
+ ## Development
34
+
35
+ ### Prepare
36
+
37
+ bundle install
38
+
39
+ ### Testing
40
+
41
+ test/run-test.rb
42
+
43
+ So, you can meet kinotan. :)
44
+
33
45
  ## Contributing
34
46
 
35
47
  1. Fork it
@@ -1,4 +1,5 @@
1
1
  #include "ruby.h"
2
+ #include "rbosl_piece.h"
2
3
  #include "rbosl_state.h"
3
4
  #include "rbosl_move.h"
4
5
 
@@ -10,6 +11,7 @@ Init_osl(void)
10
11
  {
11
12
  static VALUE mOsl;
12
13
  mOsl = rb_define_module("Osl");
14
+ rbosl_piece_init(mOsl);
13
15
  rbosl_state_init(mOsl);
14
16
  rbosl_move_init(mOsl);
15
17
  }
@@ -1,7 +1,4 @@
1
- #include "ruby.h"
2
1
  #include "rbosl_move.h"
3
- #include <osl/move.h>
4
- #include <osl/record/csa.h>
5
2
 
6
3
  VALUE cMove;
7
4
 
@@ -2,13 +2,15 @@
2
2
  #define RBOSL_MOVE_H
3
3
 
4
4
  #include "ruby.h"
5
+ #include <osl/move.h>
6
+ #include <osl/record/csa.h>
5
7
 
6
8
  extern VALUE cMove;
7
9
 
8
10
  #ifdef __cplusplus
9
11
  extern "C" {
10
12
  #endif
11
- extern void rbosl_move_init(VALUE mOsl);
13
+ void rbosl_move_init(VALUE mOsl);
12
14
  #ifdef __cplusplus
13
15
  } /* extern "C" */
14
16
  #endif
@@ -0,0 +1,41 @@
1
+ #include "rbosl_piece.h"
2
+
3
+ VALUE cPiece;
4
+
5
+ using namespace osl;
6
+
7
+ void
8
+ rbosl_piece_free(Piece* ptr)
9
+ {
10
+ ptr->~Piece();
11
+ ruby_xfree(ptr);
12
+ }
13
+
14
+ static VALUE
15
+ rbosl_piece_s_new(VALUE self)
16
+ {
17
+ Piece* ptr = new Piece();
18
+ return Data_Wrap_Struct(self, NULL, rbosl_piece_free, ptr);
19
+ }
20
+
21
+ static VALUE
22
+ rbosl_piece_to_csa(VALUE self)
23
+ {
24
+ Piece* ptr;
25
+ Data_Get_Struct(self, Piece, ptr);
26
+ return rb_str_new2(record::csa::show(*ptr).c_str());
27
+ }
28
+
29
+ #ifdef __cplusplus
30
+ extern "C" {
31
+ #endif
32
+ void
33
+ rbosl_piece_init(VALUE mOsl)
34
+ {
35
+ cPiece = rb_define_class_under(mOsl, "Piece", rb_cObject);
36
+ rb_define_singleton_method(cPiece, "new", RUBY_METHOD_FUNC(rbosl_piece_s_new), 0);
37
+ rb_define_method(cPiece, "to_csa", RUBY_METHOD_FUNC(rbosl_piece_to_csa), 0);
38
+ }
39
+ #ifdef __cplusplus
40
+ } /* extern "C" */
41
+ #endif
@@ -0,0 +1,18 @@
1
+ #ifndef RBOSL_PIECE_H
2
+ #define RBOSL_PIECE_H
3
+
4
+ #include "ruby.h"
5
+ #include <osl/piece.h>
6
+ #include <osl/record/csa.h>
7
+
8
+ extern VALUE cPiece;
9
+
10
+ #ifdef __cplusplus
11
+ extern "C" {
12
+ #endif
13
+ void rbosl_piece_init(VALUE mOsl);
14
+ #ifdef __cplusplus
15
+ } /* extern "C" */
16
+ #endif
17
+
18
+ #endif /* RBOSL_PIECE_H */
@@ -2,13 +2,22 @@
2
2
  #define RBOSL_STATE_H
3
3
 
4
4
  #include "ruby.h"
5
+ #include <osl/state/simpleState.h>
6
+ #include <osl/state/numEffectState.h>
7
+ #include <osl/handicap.h>
8
+ #include <osl/container/moveVector.h>
9
+ #include <osl/move_generator/legalMoves.h>
10
+ #include <osl/record/csa.h>
11
+ #include <iostream>
12
+
13
+ extern VALUE cSimpleState;
5
14
 
6
15
  #ifdef __cplusplus
7
16
  extern "C" {
8
17
  #endif
9
- extern void rbosl_state_init(VALUE mOsl);
10
- extern void rbosl_simpleState_init(VALUE mState);
11
- extern void rbosl_numEffectState_init(VALUE mState);
18
+ void rbosl_state_init(VALUE mOsl);
19
+ void rbosl_simpleState_init(VALUE mState);
20
+ void rbosl_numEffectState_init(VALUE mState);
12
21
  #ifdef __cplusplus
13
22
  } /* extern "C" */
14
23
  #endif
@@ -1,12 +1,5 @@
1
- #include "ruby.h"
2
1
  #include "rbosl_state.h"
3
2
  #include "rbosl_move.h"
4
- #include <osl/state/numEffectState.h>
5
- #include <osl/handicap.h>
6
- #include <osl/container/moveVector.h>
7
- #include <osl/move_generator/legalMoves.h>
8
- #include <osl/record/csa.h>
9
- #include <iostream>
10
3
 
11
4
  using namespace osl;
12
5
 
@@ -26,22 +19,13 @@ rbosl_numEffectState_s_new(VALUE self)
26
19
  return Data_Wrap_Struct(self, NULL, NULL, ptr);
27
20
  }
28
21
 
29
- static VALUE
30
- rbosl_numEffectState_show(VALUE self)
31
- {
32
- state::NumEffectState* p;
33
- Data_Get_Struct(self, state::NumEffectState, p);
34
- std::cout << *p << std::endl;
35
- return Qnil;
36
- }
37
-
38
22
  static VALUE
39
23
  rbosl_numEffectState_generate(VALUE self)
40
24
  {
41
- state::NumEffectState* p;
42
- Data_Get_Struct(self, state::NumEffectState, p);
25
+ state::NumEffectState* ptr;
26
+ Data_Get_Struct(self, state::NumEffectState, ptr);
43
27
  MoveVector moves;
44
- LegalMoves::generate(*p, moves);
28
+ LegalMoves::generate(*ptr, moves);
45
29
  VALUE moves_ary = rb_ary_new();
46
30
  for (int i = 0; i < (int)moves.size(); i++) {
47
31
  // TODO: ruby: munmap_chunk(): invalid pointer
@@ -55,18 +39,18 @@ rbosl_numEffectState_generate(VALUE self)
55
39
  static VALUE
56
40
  rbosl_numEffectState_makeMove(VALUE self, VALUE rb_move)
57
41
  {
58
- state::NumEffectState* p;
59
- Data_Get_Struct(self, state::NumEffectState, p);
42
+ state::NumEffectState* ptr;
43
+ Data_Get_Struct(self, state::NumEffectState, ptr);
60
44
 
61
45
  Move* c_move;
62
46
  if (TYPE(rb_move) == T_STRING) {
63
- Move osl_move = record::csa::strToMove(StringValuePtr(rb_move), *p);
47
+ Move osl_move = record::csa::strToMove(StringValuePtr(rb_move), *ptr);
64
48
  c_move = &osl_move;
65
49
  } else {
66
50
  Data_Get_Struct(rb_move, Move, c_move);
67
51
  }
68
52
 
69
- p->makeMove(*c_move);
53
+ ptr->makeMove(*c_move);
70
54
 
71
55
  return Qnil;
72
56
  }
@@ -74,22 +58,27 @@ rbosl_numEffectState_makeMove(VALUE self, VALUE rb_move)
74
58
  static VALUE
75
59
  rbosl_numEffectState_isValidMove(VALUE self, VALUE rb_move)
76
60
  {
77
- state::NumEffectState* p;
78
- Data_Get_Struct(self, state::NumEffectState, p);
61
+ state::NumEffectState* ptr;
62
+ Data_Get_Struct(self, state::NumEffectState, ptr);
79
63
 
80
64
  Move* c_move;
81
65
  if (TYPE(rb_move) == T_STRING) {
82
- // TODO: format check
83
- if (strlen(StringValuePtr(rb_move)) == 0) {
84
- return Qfalse;
66
+ // TODO: Rescue invalid piece. e.g.) +7776XX
67
+ // TODO: Support except for CSA format.
68
+ VALUE format_checked = rb_funcall(rb_move,
69
+ rb_intern("match"),
70
+ 1,
71
+ rb_str_new2("[+-][0-9]{4}[A-Z]{2}"));
72
+ if (format_checked == Qnil) {
73
+ return Qnil;
85
74
  }
86
- Move osl_move = record::csa::strToMove(StringValuePtr(rb_move), *p);
75
+ Move osl_move = record::csa::strToMove(StringValuePtr(rb_move), *ptr);
87
76
  c_move = &osl_move;
88
77
  } else {
89
78
  Data_Get_Struct(rb_move, Move, c_move);
90
79
  }
91
80
 
92
- if (p->isValidMove(*c_move)) {
81
+ if (ptr->isValidMove(*c_move)) {
93
82
  return Qtrue;
94
83
  } else {
95
84
  return Qfalse;
@@ -99,10 +88,10 @@ rbosl_numEffectState_isValidMove(VALUE self, VALUE rb_move)
99
88
  static VALUE
100
89
  rbosl_numEffectState_inCheck(VALUE self)
101
90
  {
102
- state::NumEffectState* p;
103
- Data_Get_Struct(self, state::NumEffectState, p);
91
+ state::NumEffectState* ptr;
92
+ Data_Get_Struct(self, state::NumEffectState, ptr);
104
93
 
105
- if (p->inCheck(alt(p->turn()))) {
94
+ if (ptr->inCheck(alt(ptr->turn()))) {
106
95
  return Qtrue;
107
96
  } else {
108
97
  return Qfalse;
@@ -116,9 +105,8 @@ void
116
105
  rbosl_numEffectState_init(VALUE mState)
117
106
  {
118
107
  VALUE cNumEffectState;
119
- cNumEffectState = rb_define_class_under(mState, "NumEffectState", rb_cObject);
108
+ cNumEffectState = rb_define_class_under(mState, "NumEffectState", cSimpleState);
120
109
  rb_define_singleton_method(cNumEffectState, "new", RUBY_METHOD_FUNC(rbosl_numEffectState_s_new), 0);
121
- rb_define_method(cNumEffectState, "show", RUBY_METHOD_FUNC(rbosl_numEffectState_show), 0);
122
110
  rb_define_method(cNumEffectState, "generate", RUBY_METHOD_FUNC(rbosl_numEffectState_generate), 0);
123
111
  rb_define_method(cNumEffectState, "makeMove", RUBY_METHOD_FUNC(rbosl_numEffectState_makeMove), 1);
124
112
  rb_define_alias(cNumEffectState, "move", "makeMove");
@@ -1,11 +1,10 @@
1
- #include "ruby.h"
2
1
  #include "rbosl_state.h"
3
- #include <osl/state/simpleState.h>
4
- #include <osl/handicap.h>
5
- #include <iostream>
2
+ #include "rbosl_piece.h"
6
3
 
7
4
  using namespace osl;
8
5
 
6
+ VALUE cSimpleState;
7
+
9
8
  void
10
9
  rbosl_simpleState_free(state::SimpleState* ptr)
11
10
  {
@@ -29,16 +28,37 @@ rbosl_simpleState_show(VALUE self)
29
28
  return Qnil;
30
29
  }
31
30
 
31
+ static VALUE
32
+ rbosl_simpleState_pieceAt(VALUE self, VALUE rb_square)
33
+ {
34
+ state::SimpleState* ptr;
35
+ Data_Get_Struct(self, state::SimpleState, ptr);
36
+
37
+ Square* c_square;
38
+ if (TYPE(rb_square) == T_STRING) {
39
+ Square tmp_square = record::csa::strToPos(StringValuePtr(rb_square));
40
+ c_square = &tmp_square;
41
+ } else {
42
+ Data_Get_Struct(rb_square, Square, c_square);
43
+ }
44
+
45
+ Piece c_piece = ptr->pieceAt(*c_square);
46
+ VALUE rb_piece = Data_Wrap_Struct(cPiece, NULL, NULL, &c_piece);
47
+
48
+ return rb_piece;
49
+ }
50
+
32
51
  #ifdef __cplusplus
33
52
  extern "C" {
34
53
  #endif
35
54
  void
36
55
  rbosl_simpleState_init(VALUE mState)
37
56
  {
38
- VALUE cSimpleState;
39
57
  cSimpleState = rb_define_class_under(mState, "SimpleState", rb_cObject);
40
58
  rb_define_singleton_method(cSimpleState, "new", RUBY_METHOD_FUNC(rbosl_simpleState_s_new), 0);
41
59
  rb_define_method(cSimpleState, "show", RUBY_METHOD_FUNC(rbosl_simpleState_show), 0);
60
+ rb_define_method(cSimpleState, "pieceAt", RUBY_METHOD_FUNC(rbosl_simpleState_pieceAt), 1);
61
+ rb_define_alias(cSimpleState, "at", "pieceAt");
42
62
  }
43
63
  #ifdef __cplusplus
44
64
  } /* extern "C" */
@@ -1,3 +1,3 @@
1
1
  module Osl
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Masafumi Yokoyama"]
10
10
  spec.email = ["myokoym@gmail.com"]
11
11
  spec.description = %q{Ruby/OSL is a Ruby binding of OpenShogiLib.}
12
- spec.summary = %q{Ruby/OSL is a Ruby binding of OpenShogiLib.}
12
+ spec.summary = %q{Ruby binding of OpenShogiLib}
13
13
  spec.homepage = "https://github.com/myokoym/ruby-osl"
14
14
  spec.license = "MIT"
15
15
 
@@ -19,6 +19,9 @@ Gem::Specification.new do |spec|
19
19
  spec.extensions = ["ext/osl/extconf.rb"]
20
20
  spec.require_paths = ["lib", "ext/osl"]
21
21
 
22
+ spec.add_development_dependency("test-unit")
23
+ spec.add_development_dependency("test-unit-notify")
24
+ spec.add_development_dependency("test-unit-rr")
22
25
  spec.add_development_dependency("bundler", "~> 1.3")
23
26
  spec.add_development_dependency("rake")
24
27
  end
@@ -1,55 +1,63 @@
1
1
  require "osl"
2
2
 
3
3
  class NumEffectStateTest < Test::Unit::TestCase
4
+ def setup
5
+ @nstate = Osl::State::NumEffectState.new
6
+ end
7
+
4
8
  def test_new
5
9
  assert_not_nil(Osl::State::NumEffectState.new)
6
10
  end
7
11
 
12
+ def test_super_class
13
+ assert_true(@nstate.is_a?(Osl::State::SimpleState))
14
+ end
15
+
16
+ def test_show
17
+ assert_true(@nstate.respond_to?(:show))
18
+ end
19
+
8
20
  def test_generate
9
- nstate = Osl::State::NumEffectState.new
10
- moves = nstate.generate
21
+ moves = @nstate.generate
11
22
  assert_not_nil(moves)
12
23
  assert_true(moves.is_a?(Array))
13
24
  assert_true(moves.first.is_a?(Osl::Move))
14
25
  end
15
26
 
16
27
  def test_makeMove
17
- nstate = Osl::State::NumEffectState.new
18
- moves = nstate.generate
28
+ moves = @nstate.generate
19
29
  assert_nothing_raised do
20
- nstate.makeMove(moves.first)
30
+ @nstate.makeMove(moves.first)
21
31
  end
22
32
  assert_nothing_raised do
23
- nstate.move(moves.first) # alias
33
+ @nstate.move(moves.first) # alias
24
34
  end
25
35
  end
26
36
 
27
37
  def test_makeMove_from_csa
28
- nstate = Osl::State::NumEffectState.new
29
38
  assert_nothing_raised do
30
- nstate.makeMove("+7776FU")
39
+ @nstate.makeMove("+7776FU")
31
40
  end
32
41
  end
33
42
 
34
43
  def test_isValidMove
35
- nstate = Osl::State::NumEffectState.new
36
- moves = nstate.generate
37
- assert_true(nstate.isValidMove(moves.first))
38
- assert_true(nstate.valid?(moves.first)) # alias
39
- assert_false(nstate.isValidMove(Osl::Move.new))
44
+ moves = @nstate.generate
45
+ assert_true(@nstate.isValidMove(moves.first))
46
+ assert_true(@nstate.valid?(moves.first)) # alias
47
+ assert_false(@nstate.isValidMove(Osl::Move.new))
40
48
  end
41
49
 
42
50
  def test_isValidMove_from_csa
43
- nstate = Osl::State::NumEffectState.new
44
- assert_true(nstate.isValidMove("+7776FU"))
45
- assert_true(nstate.valid?("+7776FU")) # alias
46
- assert_false(nstate.isValidMove("-7776FU"))
47
- assert_false(nstate.isValidMove(""))
51
+ assert_true(@nstate.isValidMove("+7776FU"))
52
+ assert_true(@nstate.valid?("+7776FU")) # alias
53
+ assert_false(@nstate.isValidMove("-7776FU"))
54
+ assert_nil(@nstate.isValidMove(""))
55
+ assert_nil(@nstate.isValidMove("7776FU"))
56
+ assert_nil(@nstate.isValidMove("-7776"))
48
57
  end
49
58
 
50
59
  def test_inCheck
51
- nstate = Osl::State::NumEffectState.new
52
- assert_false(nstate.inCheck)
53
- assert_false(nstate.in_check?) # alias
60
+ assert_false(@nstate.inCheck)
61
+ assert_false(@nstate.in_check?) # alias
54
62
  end
55
63
  end
@@ -0,0 +1,11 @@
1
+ require "osl"
2
+
3
+ class PieceTest < Test::Unit::TestCase
4
+ def test_new
5
+ assert_not_nil(Osl::Piece.new)
6
+ end
7
+
8
+ def test_to_csa
9
+ assert_true(Osl::Piece.new.to_csa.is_a?(String))
10
+ end
11
+ end
@@ -1,7 +1,26 @@
1
1
  require "osl"
2
+ require "stringio"
2
3
 
3
4
  class SimpleStateTest < Test::Unit::TestCase
5
+ def setup
6
+ @sstate = Osl::State::SimpleState.new
7
+ end
8
+
4
9
  def test_new
5
10
  assert_not_nil(Osl::State::SimpleState.new)
6
11
  end
12
+
13
+ def test_show
14
+ assert_true(@sstate.respond_to?(:show))
15
+ end
16
+
17
+ def test_pieceAt
18
+ piece = @sstate.pieceAt("77")
19
+ assert_true(piece.is_a?(Osl::Piece))
20
+ end
21
+
22
+ def test_at
23
+ piece = @sstate.at("77")
24
+ assert_true(piece.is_a?(Osl::Piece))
25
+ end
7
26
  end
metadata CHANGED
@@ -1,15 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: osl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masafumi Yokoyama
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-20 00:00:00.000000000 Z
11
+ date: 2013-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: test-unit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: test-unit-notify
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: test-unit-rr
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
13
55
  - !ruby/object:Gem::Dependency
14
56
  name: bundler
15
57
  requirement: !ruby/object:Gem::Requirement
@@ -49,12 +91,15 @@ files:
49
91
  - .gitignore
50
92
  - Gemfile
51
93
  - LICENSE
94
+ - NEWS.md
52
95
  - README.md
53
96
  - Rakefile
54
97
  - ext/osl/extconf.rb
55
98
  - ext/osl/rbosl.cpp
56
99
  - ext/osl/rbosl_move.cpp
57
100
  - ext/osl/rbosl_move.h
101
+ - ext/osl/rbosl_piece.cpp
102
+ - ext/osl/rbosl_piece.h
58
103
  - ext/osl/rbosl_state.cpp
59
104
  - ext/osl/rbosl_state.h
60
105
  - ext/osl/rbosl_state_numEffectState.cpp
@@ -67,6 +112,7 @@ files:
67
112
  - test/test-move.rb
68
113
  - test/test-numEffectState.rb
69
114
  - test/test-osl.rb
115
+ - test/test-piece.rb
70
116
  - test/test-simpleState.rb
71
117
  homepage: https://github.com/myokoym/ruby-osl
72
118
  licenses:
@@ -92,11 +138,12 @@ rubyforge_project:
92
138
  rubygems_version: 2.0.3
93
139
  signing_key:
94
140
  specification_version: 4
95
- summary: Ruby/OSL is a Ruby binding of OpenShogiLib.
141
+ summary: Ruby binding of OpenShogiLib
96
142
  test_files:
97
143
  - test/run-test.rb
98
144
  - test/test-move.rb
99
145
  - test/test-numEffectState.rb
100
146
  - test/test-osl.rb
147
+ - test/test-piece.rb
101
148
  - test/test-simpleState.rb
102
149
  has_rdoc: