14199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa/* 24199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * Copyright (C) 2009 The Android Open Source Project 34199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * 44199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * Licensed under the Apache License, Version 2.0 (the "License"); 54199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * you may not use this file except in compliance with the License. 64199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * You may obtain a copy of the License at 74199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * 84199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * http://www.apache.org/licenses/LICENSE-2.0 94199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * 104199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * Unless required by applicable law or agreed to in writing, software 114199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * distributed under the License is distributed on an "AS IS" BASIS, 124199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * See the License for the specific language governing permissions and 144199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * limitations under the License. 154199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa */ 16677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawapackage com.android.vcard.tests.testutils; 174199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa 184199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport android.test.AndroidTestCase; 194199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa 204199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport com.android.vcard.VCardParser; 21be378d5b188f51cf717e5309e3c39180e85833a8Daisuke Miyakawaimport com.android.vcard.VCardUtils; 224199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport com.android.vcard.exception.VCardException; 234199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa 244199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport java.io.IOException; 254199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport java.io.InputStream; 264199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport java.util.ArrayList; 274199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport java.util.List; 284199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa 294199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawapublic class PropertyNodesVerifier extends VNodeBuilder { 304199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa private final List<PropertyNodesVerifierElem> mPropertyNodesVerifierElemList; 314199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa private final AndroidTestCase mAndroidTestCase; 324199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa private int mIndex; 334199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa 344199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa public PropertyNodesVerifier(AndroidTestCase testCase) { 354199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa super(); 364199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa mPropertyNodesVerifierElemList = new ArrayList<PropertyNodesVerifierElem>(); 374199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa mAndroidTestCase = testCase; 384199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa } 394199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa 404199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa public PropertyNodesVerifierElem addPropertyNodesVerifierElem() { 414199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa PropertyNodesVerifierElem elem = new PropertyNodesVerifierElem(mAndroidTestCase); 424199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa mPropertyNodesVerifierElemList.add(elem); 434199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa return elem; 444199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa } 454199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa 46a76f41e328f31c2e9e9006160d8f65fe651eeb6aDaisuke Miyakawa public void verify(int resId, int vcardType) throws IOException, VCardException { 47be378d5b188f51cf717e5309e3c39180e85833a8Daisuke Miyakawa verify(mAndroidTestCase.getContext().getResources().openRawResource(resId), vcardType); 484199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa } 494199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa 50be378d5b188f51cf717e5309e3c39180e85833a8Daisuke Miyakawa public void verify(int resId, int vcardType, final VCardParser parser) 514199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa throws IOException, VCardException { 524199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa verify(mAndroidTestCase.getContext().getResources().openRawResource(resId), 53be378d5b188f51cf717e5309e3c39180e85833a8Daisuke Miyakawa vcardType, parser); 544199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa } 554199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa 56be378d5b188f51cf717e5309e3c39180e85833a8Daisuke Miyakawa public void verify(InputStream is, int vcardType) throws IOException, VCardException { 57be378d5b188f51cf717e5309e3c39180e85833a8Daisuke Miyakawa final VCardParser parser = VCardUtils.getAppropriateParser(vcardType); 58be378d5b188f51cf717e5309e3c39180e85833a8Daisuke Miyakawa verify(is, vcardType, parser); 594199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa } 604199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa 61be378d5b188f51cf717e5309e3c39180e85833a8Daisuke Miyakawa public void verify(InputStream is, int vcardType, final VCardParser parser) 624199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa throws IOException, VCardException { 631de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa parser.addInterpreter(this); 644199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa try { 651de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa parser.parse(is); 664199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa } finally { 674199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa if (is != null) { 684199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa try { 694199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa is.close(); 704199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa } catch (IOException e) { 714199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa } 724199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa } 734199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa } 744199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa } 754199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa 764199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa @Override 771de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa public void onEntryStarted() { 781de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa super.onEntryStarted(); 7948dd8e86a81d2ab40eb762975c8211c225002bf0Daisuke Miyakawa AndroidTestCase.assertTrue(mIndex < mPropertyNodesVerifierElemList.size()); 8048dd8e86a81d2ab40eb762975c8211c225002bf0Daisuke Miyakawa } 8148dd8e86a81d2ab40eb762975c8211c225002bf0Daisuke Miyakawa 8248dd8e86a81d2ab40eb762975c8211c225002bf0Daisuke Miyakawa @Override 831de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa public void onEntryEnded() { 8448dd8e86a81d2ab40eb762975c8211c225002bf0Daisuke Miyakawa mPropertyNodesVerifierElemList.get(mIndex).verify(getCurrentVNode()); 851de396f6df89363169d3a2e61a61fa98d12c1ef8Daisuke Miyakawa super.onEntryEnded(); 864199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa mIndex++; 874199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa } 884199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa} 89