1237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa/* 2237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa * Copyright (C) 2010 The Android Open Source Project 3237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa * 4237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa * Licensed under the Apache License, Version 2.0 (the "License"); 5237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa * you may not use this file except in compliance with the License. 6237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa * You may obtain a copy of the License at 7237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa * 8237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa * http://www.apache.org/licenses/LICENSE-2.0 9237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa * 10237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa * Unless required by applicable law or agreed to in writing, software 11237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa * distributed under the License is distributed on an "AS IS" BASIS, 12237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa * See the License for the specific language governing permissions and 14237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa * limitations under the License. 15237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa */ 16237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawapackage com.android.vcard.tests; 17237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa 18237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawaimport android.provider.ContactsContract.CommonDataKinds.StructuredName; 19237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawaimport android.test.AndroidTestCase; 20237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa 21237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawaimport com.android.vcard.VCardConfig; 22677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawaimport com.android.vcard.tests.testutils.VCardVerifier; 23237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa 24237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawaimport junit.framework.AssertionFailedError; 25237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawaimport junit.framework.TestCase; 26237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa 27237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawaimport java.util.Arrays; 28237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa 29237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa/** 30237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa * Tests confirming utilities for vCard tests work fine. 31237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa * 32237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa * Now that the foundation classes for vCard test cases became too complicated to 33237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa * rely on without testing itself. 34237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa */ 35237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawapublic class VCardTestUtilsTests extends AndroidTestCase { 36237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa public void testShouldFailAtPropertyNodeVerification() { 37237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa boolean failureDetected = false; 38237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa try { 39237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa final VCardVerifier verifier = new VCardVerifier(this); 40237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa verifier.initForImportTest(VCardConfig.VCARD_TYPE_V21_GENERIC, R.raw.v21_backslash); 41237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa verifier.addPropertyNodesVerifierElem() 42237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa .addExpectedNodeWithOrder("N", ";A;B\\;C\\;;D;:E;\\\\;--", // wrong 43237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa Arrays.asList("", "A;B\\", "C\\;", "D", ":E", "\\\\", "")) 44237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa .addExpectedNodeWithOrder("FN", "A;B\\C\\;D:E\\\\"); 45237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa verifier.verify(); 46237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa } catch (AssertionFailedError e) { 47237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa failureDetected = true; 48237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa } 49237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa if (!failureDetected) { 50237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa TestCase.fail("Test case that should fail actually succeeded."); 51237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa } 52237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa } 53237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa 54237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa public void testShouldFailAtContentValueVerification() { 55237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa boolean failureDetected = false; 56237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa try { 57237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa final VCardVerifier verifier = new VCardVerifier(this); 58237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa verifier.initForImportTest(VCardConfig.VCARD_TYPE_V21_GENERIC, R.raw.v21_backslash); 59237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa verifier.addContentValuesVerifierElem() 60237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa .addExpected(StructuredName.CONTENT_ITEM_TYPE) 61237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa .put(StructuredName.GIVEN_NAME, "A;B\\") 62237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa .put(StructuredName.MIDDLE_NAME, "C\\;") 63237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa .put(StructuredName.PREFIX, "D") 64237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa .put(StructuredName.SUFFIX, ":E"); 65237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa // DISPLAY_NAME is missing. 66237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa verifier.verify(); 67237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa } catch (AssertionFailedError e) { 68237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa failureDetected = true; 69237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa } 70237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa if (!failureDetected) { 71237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa TestCase.fail("Test case that should fail actually succeeded."); 72237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa } 73237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa } 74237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa 75237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa public void testShouldFailAtLineVerification() { 76237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa boolean failureDetected = false; 77237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa try { 78237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa final VCardVerifier verifier = new VCardVerifier(this); 79237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa verifier.initForExportTest(VCardConfig.VCARD_TYPE_V30_GENERIC); 80237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa verifier.addInputEntry().addContentValues(StructuredName.CONTENT_ITEM_TYPE) 81237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa .put(StructuredName.FAMILY_NAME, "\\") 82237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa .put(StructuredName.GIVEN_NAME, ";") 83237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa .put(StructuredName.MIDDLE_NAME, ",") 84237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa .put(StructuredName.PREFIX, "\n") 85237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa .put(StructuredName.DISPLAY_NAME, "[<{Unescaped:Asciis}>]"); 86237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa verifier.addLineVerifierElem() 87237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa .addExpected("TEL:1") // wrong 88237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa .addExpected("FN:[<{Unescaped:Asciis}>]"); 89237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa verifier.verify(); 90237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa } catch (AssertionFailedError e) { 91237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa failureDetected = true; 92237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa } 93237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa if (!failureDetected) { 94237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa TestCase.fail("Test case that should fail actually succeeded."); 95237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa } 96237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa } 97237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa 98237dd947f2e22d34f490bf35ef4b850d05cfffa9Daisuke Miyakawa} 99