osl 0.0.1 → 0.0.2

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