quizgame 0.0.0 → 0.0.1
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.
- data/Gemfile +2 -0
- data/VERSION +1 -1
- data/quizgame.gemspec +74 -0
- data/test/test_problem.rb +79 -0
- data/test/test_quizgame.rb +78 -3
- metadata +34 -10
data/Gemfile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.1
|
data/quizgame.gemspec
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "quizgame"
|
8
|
+
s.version = "0.0.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["ippei94da"]
|
12
|
+
s.date = "2012-06-13"
|
13
|
+
s.description = "This gem privide framework for quiz game. This gem can be used for spaced repetition study. The more frequently mistaken problems are given more frequently."
|
14
|
+
s.email = "ippei94da@gmail.com"
|
15
|
+
s.executables = ["quizgame"]
|
16
|
+
s.extra_rdoc_files = [
|
17
|
+
"LICENSE.txt",
|
18
|
+
"README.md",
|
19
|
+
"README.rdoc"
|
20
|
+
]
|
21
|
+
s.files = [
|
22
|
+
".document",
|
23
|
+
"Gemfile",
|
24
|
+
"LICENSE.txt",
|
25
|
+
"README.md",
|
26
|
+
"README.rdoc",
|
27
|
+
"Rakefile",
|
28
|
+
"VERSION",
|
29
|
+
"bin/quizgame",
|
30
|
+
"example/arithmetic.yaml",
|
31
|
+
"example/hyakuninIsshuLong.yaml",
|
32
|
+
"example/hyakuninIsshuShort.yaml",
|
33
|
+
"lib/quizgame.rb",
|
34
|
+
"lib/quizgame/problem.rb",
|
35
|
+
"lib/quizgame/quizgame.rb",
|
36
|
+
"quizgame.gemspec",
|
37
|
+
"test/helper.rb",
|
38
|
+
"test/test_problem.rb",
|
39
|
+
"test/test_quizgame.rb"
|
40
|
+
]
|
41
|
+
s.homepage = "http://github.com/ippei94da/quizgame"
|
42
|
+
s.licenses = ["MIT"]
|
43
|
+
s.require_paths = ["lib"]
|
44
|
+
s.rubygems_version = "1.8.11"
|
45
|
+
s.summary = "Framework for game with quiz format."
|
46
|
+
|
47
|
+
if s.respond_to? :specification_version then
|
48
|
+
s.specification_version = 3
|
49
|
+
|
50
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
51
|
+
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
52
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.1.3"])
|
53
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
|
54
|
+
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
55
|
+
s.add_development_dependency(%q<builtinextension>, [">= 0.0.0"])
|
56
|
+
s.add_development_dependency(%q<weightedpicker>, [">= 0.0.0"])
|
57
|
+
else
|
58
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
59
|
+
s.add_dependency(%q<bundler>, ["~> 1.1.3"])
|
60
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
61
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
62
|
+
s.add_dependency(%q<builtinextension>, [">= 0.0.0"])
|
63
|
+
s.add_dependency(%q<weightedpicker>, [">= 0.0.0"])
|
64
|
+
end
|
65
|
+
else
|
66
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
67
|
+
s.add_dependency(%q<bundler>, ["~> 1.1.3"])
|
68
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
69
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
70
|
+
s.add_dependency(%q<builtinextension>, [">= 0.0.0"])
|
71
|
+
s.add_dependency(%q<weightedpicker>, [">= 0.0.0"])
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
@@ -0,0 +1,79 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
# coding: utf-8
|
3
|
+
|
4
|
+
require 'helper'
|
5
|
+
require "stringio"
|
6
|
+
require "test/unit"
|
7
|
+
|
8
|
+
require "quizgame/problem.rb"
|
9
|
+
|
10
|
+
class TC_Problem < Test::Unit::TestCase
|
11
|
+
def setup
|
12
|
+
@p00 = Problem.new( "vortex", "vortices", "ラテン系語尾" )
|
13
|
+
@p01 = Problem.new( "これはペンです。", "This is a pen.", "かんたん" )
|
14
|
+
@p02 = Problem.new( "ふ", "むべ", "第22")
|
15
|
+
@p03 = Problem.new( "4 underscore after abc", "abc____" )
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_exhibit_question
|
19
|
+
io = StringIO.new; @p00.exhibit_question( io ) ; io.rewind
|
20
|
+
assert_equal( ["vortex\n" ], io.readlines )
|
21
|
+
|
22
|
+
io = StringIO.new; @p01.exhibit_question( io ) ; io.rewind
|
23
|
+
assert_equal( ["これはペンです。\n" ], io.readlines )
|
24
|
+
|
25
|
+
io = StringIO.new; @p02.exhibit_question( io ) ; io.rewind
|
26
|
+
assert_equal( ["ふ\n" ], io.readlines )
|
27
|
+
|
28
|
+
io = StringIO.new; @p03.exhibit_question( io ) ; io.rewind
|
29
|
+
assert_equal( ["4 underscore after abc\n"], io.readlines )
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_show_supplement
|
33
|
+
io = StringIO.new
|
34
|
+
@p00.show_supplement( io )
|
35
|
+
io.rewind
|
36
|
+
assert_equal( "[supplement]\n", io.readline )
|
37
|
+
assert_equal( " ラテン系語尾\n", io.readline )
|
38
|
+
assert_raise( EOFError ){ io.readline }
|
39
|
+
io.close
|
40
|
+
|
41
|
+
io = StringIO.new
|
42
|
+
@p03.show_supplement( io )
|
43
|
+
io.rewind
|
44
|
+
assert_raise( EOFError ){ io.readline }
|
45
|
+
io.close
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
def test_correct?
|
50
|
+
assert_equal(true, @p00.correct?("vortices"))
|
51
|
+
assert_equal(false, @p00.correct?("vortice"))
|
52
|
+
assert_equal(false, @p00.correct?("vorticese"))
|
53
|
+
|
54
|
+
assert_equal(true, @p01.correct?("This is a pen."))
|
55
|
+
assert_equal(false, @p01.correct?("They are pens."))
|
56
|
+
assert_equal(false, @p01.correct?("This is pen."))
|
57
|
+
|
58
|
+
assert_equal(false, @p02.correct?("む"))
|
59
|
+
assert_equal(true, @p02.correct?("むべ"))
|
60
|
+
assert_equal(false, @p02.correct?("むべし"))
|
61
|
+
|
62
|
+
assert_equal(true, @p00.correct?("VORTICES"))
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_emphasize_wrong
|
66
|
+
#correct
|
67
|
+
assert_equal( "vortices", @p00.emphasize_wrong( "vortices" ) )
|
68
|
+
#short
|
69
|
+
assert_equal( "vort" + "\e[31;49m____\e[39;49m", @p00.emphasize_wrong( "vort" ) )
|
70
|
+
#long
|
71
|
+
assert_equal( "vortices" + "\e[31;49mes\e[39;49m", @p00.emphasize_wrong( "vorticeses" ) )
|
72
|
+
#wrong
|
73
|
+
assert_equal( "vor" + "\e[31;49mrices\e[39;49m", @p00.emphasize_wrong( "vorrices" ) )
|
74
|
+
|
75
|
+
assert_equal( "abc" + "\e[31;49m____\e[39;49m", @p03.emphasize_wrong( "abc" ) )
|
76
|
+
assert_equal( "abc____", @p03.emphasize_wrong( "abc____" ) )
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
data/test/test_quizgame.rb
CHANGED
@@ -1,7 +1,82 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
# coding: utf-8
|
3
|
+
|
1
4
|
require 'helper'
|
5
|
+
require "test/unit"
|
6
|
+
require "stringio"
|
7
|
+
require "fileutils"
|
8
|
+
require "quizgame/quizgame.rb"
|
9
|
+
|
10
|
+
class QuizGame
|
11
|
+
attr_accessor :problem_selector, :requirement, :yaml_mtime, :norma
|
12
|
+
public :user_input, :show_result, :show_statement
|
13
|
+
end
|
14
|
+
|
15
|
+
class TC_QuizGame < Test::Unit::TestCase
|
16
|
+
QUIZ_FILE = "test/tmp.yaml"
|
17
|
+
|
18
|
+
def setup
|
19
|
+
FileUtils.rm QUIZ_FILE if FileTest.exist? QUIZ_FILE
|
20
|
+
|
21
|
+
requirement = "Answer English spell."
|
22
|
+
problems = {
|
23
|
+
"p1" => Problem.new( "1", "one", "いち" ),
|
24
|
+
"p2" => Problem.new( "2", "two", "に" )
|
25
|
+
}
|
26
|
+
wp = WeightedPicker.new(QUIZ_FILE, ["p1", "p2"])
|
27
|
+
@qg00 = QuizGame.new(requirement, problems, wp)
|
28
|
+
end
|
29
|
+
|
30
|
+
def teardown
|
31
|
+
FileUtils.rm QUIZ_FILE if FileTest.exist? QUIZ_FILE
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_initialize
|
35
|
+
#assert FileTest.exist?(@weight_file)
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_run
|
39
|
+
#run には WeightedPicker 経由の乱数要素が含まれるので、
|
40
|
+
#妥当なテストが書けない。
|
41
|
+
#1問だけにするとか、両方同じ答えにするとか手はあるが。
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_show_statement
|
45
|
+
io = StringIO.new
|
46
|
+
@qg00.show_statement( 10, io )
|
47
|
+
io.rewind
|
48
|
+
assert_equal( "q[Enter] for immediately quit.\n", io.readline )
|
49
|
+
assert_equal( "\n", io.readline )
|
50
|
+
assert_equal( "This program has 2 problems.\n", io.readline )
|
51
|
+
assert_equal( "Norma: \e[32;49m10\e[39;49m problems.\n", io.readline )
|
52
|
+
assert_raise( EOFError ){ io.readline }
|
53
|
+
io.close
|
54
|
+
end
|
2
55
|
|
3
|
-
|
4
|
-
|
5
|
-
|
56
|
+
def test_user_input
|
57
|
+
input = StringIO.new
|
58
|
+
output = StringIO.new
|
59
|
+
input.puts "test_user_input"
|
60
|
+
input.rewind
|
61
|
+
assert_equal( "test_user_input", @qg00.user_input( input, output ) )
|
6
62
|
end
|
63
|
+
|
64
|
+
def test_show_result
|
65
|
+
io = StringIO.new
|
66
|
+
@qg00.show_result( Problem.new( "1", "one" , "supplement1" ), "one", io )
|
67
|
+
io.rewind
|
68
|
+
assert_equal( "○: one\n", io.readline )
|
69
|
+
assert_raise( EOFError ){ io.readline }
|
70
|
+
io.close
|
71
|
+
|
72
|
+
io = StringIO.new
|
73
|
+
@qg00.show_result( Problem.new( "1", "one" , "supplement1" ), "oo", io )
|
74
|
+
io.rewind
|
75
|
+
assert_equal( "\e[31;49m×: \e[39;49mo\e[31;49mo_\e[39;49m\n", io.readline )
|
76
|
+
assert_equal( "○: one\n", io.readline )
|
77
|
+
assert_raise( EOFError ){ io.readline }
|
78
|
+
io.close
|
79
|
+
end
|
80
|
+
|
7
81
|
end
|
82
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quizgame
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-06-13 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rdoc
|
16
|
-
requirement: &
|
16
|
+
requirement: &79230170 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.12'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *79230170
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &79229830 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.1.3
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *79229830
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: jeweler
|
38
|
-
requirement: &
|
38
|
+
requirement: &80138900 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.8.3
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *80138900
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: simplecov
|
49
|
-
requirement: &
|
49
|
+
requirement: &80138580 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,29 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *80138580
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: builtinextension
|
60
|
+
requirement: &80138200 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 0.0.0
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *80138200
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: weightedpicker
|
71
|
+
requirement: &80137870 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.0.0
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *80137870
|
58
80
|
description: This gem privide framework for quiz game. This gem can be used for spaced
|
59
81
|
repetition study. The more frequently mistaken problems are given more frequently.
|
60
82
|
email: ippei94da@gmail.com
|
@@ -80,7 +102,9 @@ files:
|
|
80
102
|
- lib/quizgame.rb
|
81
103
|
- lib/quizgame/problem.rb
|
82
104
|
- lib/quizgame/quizgame.rb
|
105
|
+
- quizgame.gemspec
|
83
106
|
- test/helper.rb
|
107
|
+
- test/test_problem.rb
|
84
108
|
- test/test_quizgame.rb
|
85
109
|
homepage: http://github.com/ippei94da/quizgame
|
86
110
|
licenses:
|
@@ -97,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
97
121
|
version: '0'
|
98
122
|
segments:
|
99
123
|
- 0
|
100
|
-
hash:
|
124
|
+
hash: -853426801
|
101
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
126
|
none: false
|
103
127
|
requirements:
|