root/lang/ruby/ssb/test/test_ktai_db.rb @ 2145

Revision 2145, 7.7 kB (checked in by coji, 5 years ago)

lang/ruby/ssb: ケータイDBからの検索でuseragentからの部分一致サポートを追加

  • Property svn:mime-type set to text/x-ruby; charset=utf-8
  • Property svn:eol-style set to native
  • Property svn:keywords set to Id Date Author Rev URL
Line 
1# test_ktai_db.rb - Unit test for KtaiDB
2#
3# Author:: MIZOGUCHI Coji <mizoguchi.coji at gmail.com>
4# License:: Distributes under the same terms as Ruby
5#
6# $Id$
7#
8require 'test/unit'
9require 'config/common.rb'
10require 'ssb/ktai_db.rb'
11require 'nkf'
12
13class KtaiDB_Test < Test::Unit::TestCase
14TEST_DATA = <<EOL
15MobilePhoneList [2007-11-27 11:06:58] By http://ke-tai.org/
16"連番","メーカ名","機種名","機種略名","ユーザエージェント","タイプ1","タイプ2","ブラウザ幅(x)","ブラウザ高さ(y)","表示カラー数","ブラウザキャッシュ","GIF","JPG","PNG","Flash","Flashバージョン","Flashワークメモリ","Javaアプリ","BREW","HTML","SSL","ログイン","クッキー","備考","更新日"
17"1000010","DoCoMo","D501i","D501i","DoCoMo/1.0/D501i","mova","1.0","96","72","2","5","1","0","0","0","0","0","0","0","1","0","0","0","","2007-09-27 23:05:25"
18"1000020","DoCoMo","F501i","F501i","DoCoMo/1.0/F501i","mova","1.0","112","84","2","5","1","0","0","0","0","0","0","0","1","0","0","0","","2007-09-27 23:04:52"
19"1000030","DoCoMo","N501i","N501i","DoCoMo/1.0/N501i","mova","1.0","118","128","2","5","1","1","0","0","0","0","0","0","1","0","0","0","","2007-10-26 12:47:36"
20"1000040","DoCoMo","P501i","P501i","DoCoMo/1.0/P501i","mova","1.0","96","120","2","5","1","0","0","0","0","0","0","0","1","0","0","0","","2007-09-10 21:52:34"
21"1000050","DoCoMo","D502i","D502i","DoCoMo/1.0/D502i","mova","2.0","96","90","256","5","1","0","0","0","0","0","0","0","1","0","0","0","","2007-09-10 21:52:49"
22"1000060","DoCoMo","F502i","F502i","DoCoMo/1.0/F502i","mova","2.0","96","91","256","5","1","0","0","0","0","0","0","0","1","0","0","0","","2007-09-11 22:06:44"
23"1000070","DoCoMo","N502i","N502i","DoCoMo/1.0/N502i","mova","2.0","118","128","4","5","1","0","0","0","0","0","0","0","1","0","0","0","","2007-09-08 17:45:39"
24"1000080","DoCoMo","P502i","P502i","DoCoMo/1.0/P502i","mova","2.0","96","117","4","5","1","0","0","0","0","0","0","0","1","0","0","0","","2007-09-08 17:45:39"
25"1000090","DoCoMo","NM502i","NM502i","DoCoMo/1.0/NM502i","mova","2.0","111","106","2","5","1","0","0","0","0","0","0","0","1","0","0","0","","2007-09-08 17:45:39"
26"1000100","DoCoMo","SO502i","SO502i","DoCoMo/1.0/SO502i","mova","2.0","120","120","4","5","1","0","0","0","0","0","0","0","1","0","0","0","","2007-09-08 17:45:39"
27"2000010","au","C201H","HI01/HI02","UP.Browser/3.01-HI01/HI02 UP.Link/3.2.1.2","WAP1.0","3","120","51","2","1.4","0","0","0","0","0","0","0","0","0","1","1","1","","2007-09-08 17:45:39"
28"2000020","au","C202DE","DN01","UP.Browser/3.02-DN01 UP.Link/3.2.1.2","WAP1.0","3","108","39","2","1.4","0","0","0","0","0","0","0","0","0","1","1","1","","2007-09-08 17:45:39"
29"2000030","au","C301T","TS11","UP.Browser/3.04-TS11 UP.Link/3.4.4","WAP1.0","3","120","84","2","1.4","0","0","0","0","0","0","0","0","0","1","1","1","","2007-09-08 17:45:39"
30"2000040","au","C302H","HI11","UP.Browser/3.04-HI11 UP.Link/3.4.4","WAP1.0","3","120","75","2","1.4","0","0","0","0","0","0","0","0","0","1","1","1","","2007-09-08 17:45:39"
31"2000050","au","C303CA","CA11","UP.Browser/3.04-CA11 UP.Link/3.4.4","WAP1.0","3","120","91","2","1.4","0","0","0","0","0","0","0","0","0","1","1","1","","2007-09-08 17:45:39"
32"2000060","au","C304SA","SY11","UP.Browser/3.04-SY11 UP.Link/3.4.4","WAP1.0","3","128","96","2","1.4","0","0","0","0","0","0","0","0","0","1","1","1","","2007-09-08 17:45:39"
33"2000070","au","C305S","SM11","UP.Browser/3.04-SN11 UP.Link/3.4.4","WAP1.0","3","120","98","2","1.4","0","0","0","0","0","0","0","0","0","1","1","1","","2007-09-08 17:45:39"
34"2000080","au","C307K","KC11","UP.Browser/3.04-KC11 UP.Link/3.4.4","WAP1.0","3","121","90","2","1.4","0","0","0","0","0","0","0","0","0","1","1","1","","2007-09-08 17:45:39"
35"2000090","au","C308P","MA11/MA12","UP.Browser/3.04-MA11/MA12 UP.Link/3.4.4","WAP1.0","3","122","78","2","1.4","0","0","0","0","0","0","0","0","0","1","1","1","","2007-09-08 17:45:39"
36"2000100","au","C309H","HI12","UP.Browser/3.04-HI12 UP.Link/3.4.4","WAP1.0","3","120","112","256","7.5","0","0","1","0","0","0","0","0","0","1","1","1","","2007-09-08 17:45:39"
37"3000010","Vodafone","J-SH02","J-SH02","J-PHONE/2.0/J-SH02","C2","","96","84","256","6","0","0","1","0","0","0","0","0","1","0","0","0","","2007-09-08 17:45:39"
38"3000020","Vodafone","J-DN02","J-DN02","J-PHONE/2.0/J-DN02","C2","","116","122","4","6","0","0","1","0","0","0","0","0","1","0","0","0","","2007-09-08 17:45:39"
39"3000030","Vodafone","J-P02","J-P02","J-PHONE/2.0/J-P02","C2","","96","89","4","6","0","0","1","0","0","0","0","0","1","0","0","0","","2007-09-08 17:45:39"
40"3000040","Vodafone","J-SA02","J-SA02","J-PHONE/2.0/J-SA02","C2","","96","76","256","6","0","0","1","0","0","0","0","0","1","0","0","0","","2007-09-08 17:45:39"
41"3000050","Vodafone","J-SH03","J-SH03","J-PHONE/2.0/J-SH03","C2","","96","104","256","6","0","0","1","0","0","0","0","0","1","0","0","0","","2007-09-08 17:45:39"
42"3000060","Vodafone","J-T04","J-T04","J-PHONE/2.0/J-T04","C2","","96","90","256","6","0","0","1","0","0","0","0","0","1","0","0","0","","2007-09-08 17:45:39"
43"3000070","Vodafone","J-P03","J-P03","J-PHONE/2.0/J-P03","C2","","96","95","256","6","0","0","1","0","0","0","0","0","1","0","0","0","","2007-09-08 17:45:39"
44"3000080","Vodafone","J-K03S","J-K03S","J-PHONE/3.0/J-K03","C3","","120","110","256","6","0","1","1","0","0","0","0","0","1","0","0","0","","2007-09-08 17:45:39"
45"3000090","Vodafone","J-K03","J-K03","J-PHONE/3.0/J-K03","C3","","120","110","256","6","0","1","1","0","0","0","0","0","1","0","0","0","","2007-09-08 17:45:39"
46"3000100","Vodafone","J-D03S","J-D03S","J-PHONE/3.0/J-D03","C3","","120","117","256","6","0","1","1","0","0","0","0","0","1","0","0","0","","2007-09-08 17:45:39"
47EOL
48
49  def setup
50    File.open('test.csv', 'w') do |tmp|
51      tmp.write NKF::nkf('-s --windows', TEST_DATA)
52    end
53    @ktai_db = SSB::KtaiDB.new(true, 'test.csv')
54  end
55
56  def teardown
57    File.unlink('test.csv')
58  end
59
60  def test_default_size_will_30
61    assert_equal(@ktai_db.size, 30)
62  end
63
64  def test_simple_search
65    ret = @ktai_db.search(:carrier => 'DoCoMo')
66    assert_equal(ret.size, 10)
67
68    ret = @ktai_db.search(:carrier => 'au')
69    assert_equal(ret.size, 10)
70    ret = @ktai_db.search(:carrier => 'KDDI')
71    assert_equal(ret.size, 10)
72    ret = @ktai_db.search(:carrier => 'Tu-ka')
73    assert_equal(ret.size, 10)
74
75    ret = @ktai_db.search(:carrier => 'SoftBank')
76    assert_equal(ret.size, 10)
77    ret = @ktai_db.search(:carrier => 'Vodafone')
78    assert_equal(ret.size, 10)
79    ret = @ktai_db.search(:carrier => 'ThirdForce')
80    assert_equal(ret.size, 10)
81
82    ret = @ktai_db.search(:carrier => 'DoCoMo', :name => 'N') # N501i N502i NM502i
83    assert_equal(ret.size, 3)
84    assert_equal(ret[0][:name], 'N501i')
85    assert_equal(ret[1][:name], 'N502i')
86    assert_equal(ret[2][:name], 'NM502i')
87
88    ret = @ktai_db.search(:name => 'N') # N501i N502i NM502i
89    assert_equal(ret.size, 3)
90    assert_equal(ret[0][:name], 'N501i')
91    assert_equal(ret[1][:name], 'N502i')
92    assert_equal(ret[2][:name], 'NM502i')
93
94    ret = @ktai_db.search(:carrier => 'DoCoMo', :name => 'N5') # N501i N502i
95    assert_equal(ret.size, 2)
96    assert_equal(ret[0][:name], 'N501i')
97    assert_equal(ret[1][:name], 'N502i')
98
99    ret = @ktai_db.search(:carrier => 'DoCoMo', :name => 'NM') # NM502i
100    assert_equal(ret.size, 1)
101    assert_equal(ret[0][:name], 'NM502i')
102  end
103
104  # useragentで検索するとき、完全一致のときは1件だけ
105  def test_search_by_useragent_fullmatch
106    ret = @ktai_db.search(:useragent => 'UP.Browser/3.04-HI11 UP.Link/3.4.4')
107    assert_equal(ret.size, 1)
108    assert_equal(ret[0][:name], 'C302H')
109  end
110
111  # useragentで検索は前方からの部分一致でok
112  def test_search_by_useragent_partmatch
113    ret = @ktai_db.search(:useragent => 'UP.Browser/3.04')
114    assert_equal(ret.size, 8)
115    assert_equal(ret[0][:name], 'C301T')
116    assert_equal(ret[7][:name], 'C309H')
117  end
118end
119
Note: See TracBrowser for help on using the browser.