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 CHANGED
@@ -10,4 +10,6 @@ group :development do
10
10
  gem "bundler", "~> 1.1.3"
11
11
  gem "jeweler", "~> 1.8.3"
12
12
  gem "simplecov", ">= 0"
13
+ gem "builtinextension", ">= 0.0.0"
14
+ gem "weightedpicker", ">= 0.0.0"
13
15
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.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
+
@@ -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
- class TestQuizgame < Test::Unit::TestCase
4
- def test_something_for_real
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
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.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: &81673750 !ruby/object:Gem::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: *81673750
24
+ version_requirements: *79230170
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &81672530 !ruby/object:Gem::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: *81672530
35
+ version_requirements: *79229830
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: jeweler
38
- requirement: &81671900 !ruby/object:Gem::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: *81671900
46
+ version_requirements: *80138900
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: simplecov
49
- requirement: &81671160 !ruby/object:Gem::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: *81671160
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: 953911631
124
+ hash: -853426801
101
125
  required_rubygems_version: !ruby/object:Gem::Requirement
102
126
  none: false
103
127
  requirements: