2 * Copyright 2007 ZXing authors
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package com.google.zxing.client.result;
19 import com.google.zxing.BarcodeFormat;
20 import com.google.zxing.Result;
21 import junit.framework.TestCase;
24 * Tests {@link ParsedReaderResult}.
26 * @author srowen@google.com (Sean Owen)
28 public final class ParsedReaderResultTestCase extends TestCase {
30 public void testTextType() {
31 doTestResult("foo", ParsedReaderResultType.TEXT);
32 doTestResult("", ParsedReaderResultType.TEXT);
33 doTestResult("This is a test", ParsedReaderResultType.TEXT);
36 public void testBookmarkType() {
37 doTestResult("MEBKM:URL:google.com;;", ParsedReaderResultType.BOOKMARK);
38 doTestResult("MEBKM:URL:google.com;TITLE:Google;;", ParsedReaderResultType.BOOKMARK);
39 doTestResult("MEBKM:TITLE:Google;URL:google.com;;", ParsedReaderResultType.BOOKMARK);
40 doTestResult("MEBKM:URL:http://google.com;;", ParsedReaderResultType.BOOKMARK);
41 doTestResult("MEBKM:URL:HTTPS://google.com;;", ParsedReaderResultType.BOOKMARK);
44 public void testURLTOType() {
45 doTestResult("URLTO:foo:bar.com", ParsedReaderResultType.URLTO);
46 doTestResult("URLTO::bar.com", ParsedReaderResultType.URLTO);
47 doTestResult("URLTO::http://bar.com", ParsedReaderResultType.URLTO);
50 public void testEmailType() {
51 doTestResult("MATMSG:TO:srowen@example.org;;", ParsedReaderResultType.EMAIL);
52 doTestResult("MATMSG:TO:srowen@example.org;SUB:Stuff;;", ParsedReaderResultType.EMAIL);
53 doTestResult("MATMSG:TO:srowen@example.org;SUB:Stuff;BODY:This is some text;;", ParsedReaderResultType.EMAIL);
54 doTestResult("MATMSG:SUB:Stuff;BODY:This is some text;TO:srowen@example.org;;", ParsedReaderResultType.EMAIL);
55 doTestResult("TO:srowen@example.org;SUB:Stuff;BODY:This is some text;;", ParsedReaderResultType.TEXT);
58 public void testEmailAddressType() {
59 doTestResult("srowen@example.org", ParsedReaderResultType.EMAIL_ADDRESS);
60 doTestResult("mailto:srowen@example.org", ParsedReaderResultType.EMAIL_ADDRESS);
61 doTestResult("srowen@example", ParsedReaderResultType.TEXT);
62 doTestResult("srowen", ParsedReaderResultType.TEXT);
63 doTestResult("Let's meet @ 2", ParsedReaderResultType.TEXT);
66 public void testAddressBookType() {
67 doTestResult("MECARD:N:Sean Owen;;", ParsedReaderResultType.ADDRESSBOOK);
68 doTestResult("MECARD:TEL:+12125551212;N:Sean Owen;;", ParsedReaderResultType.ADDRESSBOOK);
69 doTestResult("MECARD:TEL:+12125551212;N:Sean Owen;URL:google.com;;", ParsedReaderResultType.ADDRESSBOOK);
70 doTestResult("TEL:+12125551212;N:Sean Owen;;", ParsedReaderResultType.TEXT);
73 public void testAddressBookAUType() {
74 doTestResult("MEMORY:\r\n", ParsedReaderResultType.ADDRESSBOOK_AU);
75 doTestResult("MEMORY:foo\r\nNAME1:Sean\r\n", ParsedReaderResultType.ADDRESSBOOK_AU);
76 doTestResult("TEL1:+12125551212\r\nMEMORY:\r\n", ParsedReaderResultType.ADDRESSBOOK_AU);
79 public void testUPC() {
80 doTestResult("123456789012", ParsedReaderResultType.UPC, BarcodeFormat.UPC_A);
81 doTestResult("1234567890123", ParsedReaderResultType.UPC, BarcodeFormat.UPC_A);
82 doTestResult("12345678901", ParsedReaderResultType.TEXT);
85 public void testURI() {
86 doTestResult("http://google.com", ParsedReaderResultType.URI);
87 doTestResult("google.com", ParsedReaderResultType.URI);
88 doTestResult("https://google.com", ParsedReaderResultType.URI);
89 doTestResult("HTTP://google.com", ParsedReaderResultType.URI);
90 doTestResult("http://google.com/foobar", ParsedReaderResultType.URI);
91 doTestResult("https://google.com:443/foobar", ParsedReaderResultType.URI);
92 doTestResult("google.com:443/foobar", ParsedReaderResultType.URI);
95 public void testGeo() {
96 doTestResult("geo:1,2", ParsedReaderResultType.GEO);
97 doTestResult("geo:1,2,3", ParsedReaderResultType.GEO);
98 doTestResult("geo:100.33,-32.3344,3.35", ParsedReaderResultType.GEO);
99 doTestResult("geography", ParsedReaderResultType.TEXT);
102 public void testTel() {
103 doTestResult("tel:+15551212", ParsedReaderResultType.TEL);
104 doTestResult("tel:212 555 1212", ParsedReaderResultType.TEL);
105 doTestResult("tel:2125551212", ParsedReaderResultType.TEL);
106 doTestResult("telephone", ParsedReaderResultType.TEXT);
110 public void testNDEFText() {
111 doTestResult(new byte[] {(byte)0xD1,(byte)0x01,(byte)0x05,(byte)0x54,
112 (byte)0x02,(byte)0x65,(byte)0x6E,(byte)0x68,
114 ParsedReaderResultType.NDEF_TEXT);
117 public void testNDEFURI() {
118 doTestResult(new byte[] {(byte)0xD1,(byte)0x01,(byte)0x08,(byte)0x55,
119 (byte)0x01,(byte)0x6E,(byte)0x66,(byte)0x63,
120 (byte)0x2E,(byte)0x63,(byte)0x6F,(byte)0x6D},
121 ParsedReaderResultType.NDEF_URI);
124 public void testNDEFSmartPoster() {
125 doTestResult(new byte[] {(byte)0xD1,(byte)0x02,(byte)0x2F,(byte)0x53,
126 (byte)0x70,(byte)0x91,(byte)0x01,(byte)0x0E,
127 (byte)0x55,(byte)0x01,(byte)0x6E,(byte)0x66,
128 (byte)0x63,(byte)0x2D,(byte)0x66,(byte)0x6F,
129 (byte)0x72,(byte)0x75,(byte)0x6D,(byte)0x2E,
130 (byte)0x6F,(byte)0x72,(byte)0x67,(byte)0x11,
131 (byte)0x03,(byte)0x01,(byte)0x61,(byte)0x63,
132 (byte)0x74,(byte)0x00,(byte)0x51,(byte)0x01,
133 (byte)0x12,(byte)0x54,(byte)0x05,(byte)0x65,
134 (byte)0x6E,(byte)0x2D,(byte)0x55,(byte)0x53,
135 (byte)0x48,(byte)0x65,(byte)0x6C,(byte)0x6C,
136 (byte)0x6F,(byte)0x2C,(byte)0x20,(byte)0x77,
137 (byte)0x6F,(byte)0x72,(byte)0x6C,(byte)0x64},
138 ParsedReaderResultType.NDEF_SMART_POSTER);
142 private static void doTestResult(String text, ParsedReaderResultType type) {
143 doTestResult(text, type, null);
146 private static void doTestResult(String text, ParsedReaderResultType type, BarcodeFormat format) {
147 Result fakeResult = new Result(text, null, null, format);
148 ParsedReaderResult result = ParsedReaderResult.parseReaderResult(fakeResult);
149 assertNotNull(result);
150 assertEquals(type, result.getType());
153 private static void doTestResult(byte[] rawBytes, ParsedReaderResultType type) {
154 Result fakeResult = new Result(null, rawBytes, null, null);
155 ParsedReaderResult result = ParsedReaderResult.parseReaderResult(fakeResult);
156 assertNotNull(result);
157 assertEquals(type, result.getType());