UdgerUaTest.java
1package org.udger.parser;
2
3import java.io.IOException;
4import java.io.InputStream;
5import java.sql.SQLException;
6
7import javax.json.JsonArray;
8import javax.json.JsonObject;
9import javax.json.JsonReader;
10
11public class UdgerUaTest {
12
13 public static void main(String args[]) throws SQLException {
14 InputStream is = UdgerUaTest.class.getResourceAsStream("test_ua.json");
15 JsonReader jr = javax.json.Json.createReader(is);
16 JsonArray ja = jr.readArray();
17 UdgerParser up = null;
18 try {
19 UdgerParser.ParserDbData parserDbData = new UdgerParser.ParserDbData("udgerdb_v3.dat");
20 up = new UdgerParser(parserDbData);
21 for (int i=0; i < ja.size(); i++) {
22 JsonObject jar = ja.getJsonObject(i);
23 JsonObject jor = jar.getJsonObject("ret");
24 String query = jar.getJsonObject("test").getString("teststring");
25 try {
26 UdgerUaResult ret = up.parseUa(query);
27 System.out.print("### Test : " + (i+1) + " - ");
28 if (checkResult(ret, jor)) {
29 System.out.println("SUCCEEDED");
30 } else {
31 System.out.println("FAILED!");
32 }
33 System.out.println("Query: " + query);
34// System.out.println("Result: " + ReflectionToStringBuilder.toString(ret, ToStringStyle.MULTI_LINE_STYLE));
35 } catch (SQLException e) {
36 e.printStackTrace();
37 }
38 }
39 } finally {
40 if (up != null) {
41 try {
42 up.close();
43 } catch (IOException e) {
44 }
45 }
46 }
47 }
48
49 private static boolean checkResult(UdgerUaResult ret, JsonObject jor) {
50 boolean result = true;
51 result = testEqual(jor, "ua_engine", ret.getUaEngine()) && result;
52 result = testEqual(jor, "ua_version", ret.getUaVersion()) && result;
53 result = testEqual(jor, "ua_family_code", ret.getUaFamilyCode()) && result;
54 result = testEqual(jor, "ua_family_icon_big", ret.getUaFamilyIconBig()) && result;
55 result = testEqual(jor, "crawler_category", ret.getCrawlerCategory()) && result;
56 result = testEqual(jor, "ua_family_icon", ret.getUaFamilyIcon()) && result;
57 result = testEqual(jor, "ua_family_vendor", ret.getUaFamilyVendor()) && result;
58 result = testEqual(jor, "ua_family_vendor_code", ret.getUaFamilyVendorCode()) && result;
59 result = testEqual(jor, "ua_uptodate_current_version", ret.getUaUptodateCurrentVersion()) && result;
60 result = testEqual(jor, "ua_class_code", ret.getUaClassCode()) && result;
61 result = testEqual(jor, "ua", ret.getUa()) && result;
62 result = testEqual(jor, "ua_family", ret.getUaFamily()) && result;
63 result = testEqual(jor, "ua_family_homepage", ret.getUaFamilyHomepage()) && result;
64 result = testEqual(jor, "ua_version_major", ret.getUaVersionMajor()) && result;
65 result = testEqual(jor, "ua_family_info_url", ret.getUaFamilyInfoUrl()) && result;
66 result = testEqual(jor, "crawler_respect_robotstxt", ret.getCrawlerRespectRobotstxt()) && result;
67 result = testEqual(jor, "ua_class", ret.getUaClass()) && result;
68 result = testEqual(jor, "ua_family_vendor_homepage", ret.getUaFamilyVendorHomepage()) && result;
69 result = testEqual(jor, "crawler_category_code", ret.getCrawlerCategoryCode()) && result;
70// result = testEqual(jor, "ua_string", ret.getUserAgent() != null ? ret.getUserAgent().get) && result;
71
72 result = testEqual(jor, "os_family_vendor_homepage", ret.getOsFamilyVendorHomepage()) && result;
73 result = testEqual(jor, "os_icon_big", ret.getOsIconBig()) && result;
74 result = testEqual(jor, "os_homepage", ret.getOsHomePage()) && result;
75 result = testEqual(jor, "os_icon", ret.getOsIcon()) && result;
76 result = testEqual(jor, "os", ret.getOs()) && result;
77 result = testEqual(jor, "os_family_code", ret.getOsFamilyCode()) && result;
78 result = testEqual(jor, "os_family_vendor", ret.getOsFamilyVendor()) && result;
79 result = testEqual(jor, "os_family_vendor_code", ret.getOsFamilyVendorCode()) && result;
80 result = testEqual(jor, "os_code", ret.getOsCode()) && result;
81 result = testEqual(jor, "os_family", ret.getOsFamily()) && result;
82 result = testEqual(jor, "os_info_url", ret.getOsInfoUrl()) && result;
83
84 result = testEqual(jor, "device_class", ret.getDeviceClass()) && result;
85 result = testEqual(jor, "device_class_icon_big", ret.getDeviceClassIconBig()) && result;
86 result = testEqual(jor, "device_class_icon", ret.getDeviceClassIcon()) && result;
87 result = testEqual(jor, "device_class_info_url", ret.getDeviceClassInfoUrl()) && result;
88 result = testEqual(jor, "device_class_code", ret.getDeviceClassCode()) && result;
89
90 result = testEqual(jor, "device_marketname", ret.getDeviceMarketname()) && result;
91 result = testEqual(jor, "device_brand", ret.getDeviceBrand()) && result;
92 result = testEqual(jor, "device_brand_code", ret.getDeviceBrandCode()) && result;
93 result = testEqual(jor, "device_brand_homepage", ret.getDeviceBrandHomepage()) && result;
94 result = testEqual(jor, "device_brand_icon", ret.getDeviceBrandIcon()) && result;
95 result = testEqual(jor, "device_brand_icon_big", ret.getDeviceBrandIconBig()) && result;
96 result = testEqual(jor, "device_brand_info_url", ret.getDeviceBrandInfoUrl()) && result;
97
98 return result;
99 }
100
101 private static boolean testEqual(JsonObject jor, String test, String ret) {
102 String expected = jor.getString(test);
103 if (!expected.equals(ret) && expected.startsWith("https://")) {
104 expected = expected.replaceAll(" ", "%20");
105 }
106 if (!expected.equals(ret)) {
107 System.out.println("Failed \"" + test + "\" : value=" + ret + " expected:" + expected);
108 return false;
109 }
110 return true;
111 }
112
113}
UdgerUaResult parseUa(String uaString)