quizgame 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: