source: EcnlProtoTool/trunk/mrbgems/mruby-pack/packtest.rb@ 279

Last change on this file since 279 was 279, checked in by coas-nagasima, 7 years ago

ファイルを追加、更新。

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-ruby
File size: 4.1 KB
Line 
1# encoding: ascii
2
3# a = Array, s = String, t = Template
4
5def packtest(a, s, t)
6 begin
7 r = a.pack(t)
8 return if r == s
9 puts "#{a.inspect}.pack(#{t.inspect}) -> #{r.inspect} should be #{s.inspect}"
10 rescue => r
11 unless r.is_a? s
12 puts "#{a.inspect}.pack(#{t.inspect}) -> #{r.inspect} should be #{s.inspect}"
13 end
14 end
15end
16
17def unpacktest(a, s, t)
18 r = s.unpack(t)
19 return if r == a
20 puts "#{s.inspect}.unpack(#{t.inspect}) -> #{r.inspect} should be #{a.inspect}"
21end
22
23def pptest(a, s, t)
24 packtest(a, s, t)
25 unpacktest(a, s, t)
26end
27
28pptest [1], "\x01", "C"
29
30packtest [1.1], "\x01", "C"
31packtest [-1], "\xff", "C"
32packtest [1,2], "\x01\x02", "C2"
33#packtest [1], "X", ArgumentError
34
35unpacktest [48, nil], "0", "CC"
36unpacktest [160, -96], "\xa0\xa0", "Cc"
37unpacktest [49, 50, 51], "123", "C*"
38
39pptest [12849], "12", "S"
40unpacktest [nil], "0", "S"
41unpacktest [12849, nil], "123", "SS"
42unpacktest [12849], "123", "S*"
43
44pptest [10000], "\x27\x10", "s>"
45pptest [-10000], "\xd8\xf0", "s>"
46pptest [50000], "\xc3\x50", "S>"
47
48pptest [10000], "\x10\x27", "s<"
49pptest [-10000], "\xf0\xd8", "s<"
50pptest [50000], "\x50\xc3", "S<"
51
52pptest [1000000000], "\x3b\x9a\xca\x00", "l>"
53pptest [-1000000000], "\xc4\x65\x36\x00", "l>"
54
55pptest [1], "\x01\x00\x00\x00", "L<"
56pptest [258], "\x02\x01\x00\x00", "L<"
57pptest [66051], "\x03\x02\x01\x00", "L<"
58pptest [16909060], "\x04\x03\x02\x01", "L<"
59pptest [16909060], "\x01\x02\x03\x04", "L>"
60
61packtest [-1], "\xff\xff\xff\xff", "L<"
62
63pptest [1000000000], "\x00\x00\x00\x00\x3b\x9a\xca\x00", "q>"
64pptest [-1000000000], "\xff\xff\xff\xff\xc4\x65\x36\x00", "q>"
65
66if (2**33).is_a? Fixnum
67 pptest [81985529216486895], "\x01\x23\x45\x67\x89\xab\xcd\xef", "q>"
68 pptest [-1167088121787636991], "\x01\x23\x45\x67\x89\xab\xcd\xef", "q<"
69end
70
71pptest [16909060], "\x01\x02\x03\x04", "N"
72pptest [258], "\x01\x02", "n"
73pptest [32769], "\x80\x01", "n"
74
75pptest [16909060], "\x04\x03\x02\x01", "V"
76pptest [258], "\x02\x01", "v"
77
78packtest [""], "", "m"
79packtest ["a"], "YQ==\n", "m"
80packtest ["ab"], "YWI=\n", "m"
81packtest ["abc"], "YWJj\n", "m"
82packtest ["abcd"], "YWJjZA==\n", "m"
83
84unpacktest [""], "", "m"
85unpacktest ["a"], "YQ==\n", "m"
86unpacktest ["ab"], "YWI=\n", "m"
87unpacktest ["abc"], "YWJj\n", "m"
88unpacktest ["abcd"], "YWJjZA==\n", "m"
89
90packtest [""], "\0", "H"
91packtest ["3"], "0", "H"
92packtest ["34"], "", "H0"
93packtest ["34"], "0", "H"
94packtest ["34"], "4", "H2"
95packtest ["34"], "4\0", "H3"
96packtest ["3456"], "4P", "H3"
97packtest ["34563"], "4V0", "H*"
98packtest ["5a"], "Z", "H*"
99packtest ["5A"], "Z", "H*"
100
101unpacktest [""], "", "H"
102unpacktest [""], "0", "H0"
103unpacktest ["3"], "0", "H"
104unpacktest ["30"], "0", "H2"
105unpacktest ["30"], "0", "H3"
106unpacktest ["303"], "01", "H3"
107unpacktest ["303132"], "012", "H*"
108unpacktest ["3031", 50], "012", "H4C"
109unpacktest ["5a"], "Z", "H*"
110
111packtest [""], "\0", "h"
112packtest ["3"], "\03", "h"
113packtest ["34"], "", "h0"
114packtest ["34"], "\03", "h"
115packtest ["34"], "C", "h2"
116packtest ["34"], "C\0", "h3"
117packtest ["3456"], "C\05", "h3"
118packtest ["34563"], "Ce\03", "h*"
119
120packtest [""], " ", "A"
121unpacktest [""], "", "A"
122pptest ["1"], "1", "A"
123pptest ["1"], "1 ", "A2"
124unpacktest ["1"], "1", "A2"
125unpacktest ["1"], "1 ", "A2"
126unpacktest ["1"], "1\0", "A2"
127packtest ["12"], "1", "A"
128unpacktest ["1"], "12", "A"
129pptest ["123"], "123", "A*"
130packtest ["1","2"], "2", "A0A"
131unpacktest ["","2"], "2", "A0A"
132
133packtest [""], "\0", "a"
134unpacktest [""], "", "a"
135pptest ["1"], "1", "a"
136pptest ["1 "], "1 ", "a2"
137pptest ["1\0"], "1\0", "a2"
138packtest ["1"], "1\0", "a2"
139pptest ["123"], "123", "a*"
140
141packtest [""], "\0", "Z"
142unpacktest [""], "", "Z"
143pptest ["1"], "1", "Z"
144pptest ["1"], "1\0", "Z2"
145pptest ["1 "], "1 ", "Z2"
146pptest ["123"], "123\0", "Z*"
147pptest ["1","2"], "12", "ZZ"
148pptest ["1","2"], "1\0002", "Z*Z"
149unpacktest ["1","3"], "1\00023", "Z3Z"
150
151packtest [1, 2], "\x01\x02", "CyC"
152
153packtest [65], "A", 'U'
154packtest [59411], "\xEE\xA0\x93", 'U'
155
156pptest [1], "\x00\x01", "xC"
157unpacktest [2], "\xcc\x02", "xC"
Note: See TracBrowser for help on using the repository browser.