156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa/* 256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * Copyright (C) 2011 The Android Open Source Project 356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * 456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * Licensed under the Apache License, Version 2.0 (the "License"); 556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * you may not use this file except in compliance with the License. 656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * You may obtain a copy of the License at 756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * 856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * http://www.apache.org/licenses/LICENSE-2.0 956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * 1056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * Unless required by applicable law or agreed to in writing, software 1156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * distributed under the License is distributed on an "AS IS" BASIS, 1256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * See the License for the specific language governing permissions and 1456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * limitations under the License. 1556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa */ 1656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawapackage com.android.vcard.tests; 1756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 1856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawaimport com.android.vcard.VCardInterpreter; 1956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawaimport com.android.vcard.VCardParser; 2056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawaimport com.android.vcard.VCardParser_V21; 2156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawaimport com.android.vcard.VCardProperty; 2256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawaimport com.android.vcard.exception.VCardException; 2356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 2456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawaimport android.test.AndroidTestCase; 2556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 2656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawaimport java.io.IOException; 2756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawaimport java.io.InputStream; 2856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawaimport java.util.ArrayList; 2956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawaimport java.util.Arrays; 3056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawaimport java.util.List; 3156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 3256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa/** 3356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * Tests for basic {@link VCardParser} capability (e.g. if it calls callbacks 3456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * in {@link VCardInterpreter}}. 3556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa */ 3656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawapublic class VCardParserTests extends AndroidTestCase { 3756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa private enum Order { 3856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa START, 3956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa END, 4056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa START_ENTRY, 4156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa END_ENTRY, 4256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa PROPERTY_CREATED, 4356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } 4456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 4556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa private class MockVCardInterpreter implements VCardInterpreter { 4656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa private final List<Order> mHistory = new ArrayList<Order>(); 4756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa private final List<Order> mExpectedOrder = new ArrayList<Order>(); 4856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 4956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa public MockVCardInterpreter addExpectedOrder(Order order) { 5056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa mExpectedOrder.add(order); 5156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa return this; 5256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } 5356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 5456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa private void inspectOrder(Order order) { 5556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa mHistory.add(order); 5656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa final Order top = mExpectedOrder.get(0); 5756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa assertEquals(top, order); 5856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa mExpectedOrder.remove(0); 5956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } 6056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 6156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa public void verify() { 6256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa assertTrue(String.format("Remaining: " + Arrays.toString(mExpectedOrder.toArray())), 6356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa mExpectedOrder.isEmpty()); 6456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } 6556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 6656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa @Override 6756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa public void onVCardStarted() { 6856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa inspectOrder(Order.START); 6956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } 7056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 7156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa @Override 7256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa public void onVCardEnded() { 7356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa inspectOrder(Order.END); 7456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } 7556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 7656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa @Override 7756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa public void onEntryStarted() { 7856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa inspectOrder(Order.START_ENTRY); 7956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } 8056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 8156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa @Override 8256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa public void onEntryEnded() { 8356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa inspectOrder(Order.END_ENTRY); 8456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } 8556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 8656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa @Override 8756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa public void onPropertyCreated(VCardProperty property) { 8856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa inspectOrder(Order.PROPERTY_CREATED); 8956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } 9056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } 9156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 9256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa public void testSimple() throws IOException, VCardException { 9356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa InputStream inputStream = getContext().getResources().openRawResource(R.raw.v21_simple_1); 9456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa try { 9556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa VCardParser parser = new VCardParser_V21(); 9656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa MockVCardInterpreter interpreter = new MockVCardInterpreter(); 9756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa interpreter.addExpectedOrder(Order.START) 9856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.START_ENTRY) 9956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) 10056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.END_ENTRY) 10156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.END); 10256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa parser.addInterpreter(interpreter); 10356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa parser.parse(inputStream); 10456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa interpreter.verify(); 10556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } finally { 10656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa inputStream.close(); 10756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } 10856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } 10956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 11056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa public void testNest() throws IOException, VCardException { 11156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa InputStream inputStream = getContext().getResources().openRawResource(R.raw.v21_nest); 11256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa try { 11356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa VCardParser parser = new VCardParser_V21(); 11456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa MockVCardInterpreter interpreter = new MockVCardInterpreter(); 11556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa interpreter.addExpectedOrder(Order.START) 11656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.START_ENTRY) 11756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For VERSION 11856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For N 11956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.START_ENTRY) // First nested vCard begins 12056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For VERSION 12156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For N 12256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.END_ENTRY) // First nested vCard ends 12356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.START_ENTRY) // Second nested vCard begins 12456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For VERSION 12556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For N 12656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.END_ENTRY) // Second nested vCard ends 12756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For TEL 12856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.END_ENTRY) 12956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.END); 13056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa parser.addInterpreter(interpreter); 13156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa parser.parse(inputStream); 13256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa interpreter.verify(); 13356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } finally { 13456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa inputStream.close(); 13556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } 13656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } 13756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 13856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa /** 13956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * Tests if {@link VCardParser#parse(InputStream)} parses the whole vCard file and 14056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * {@link VCardParser#parseOne(InputStream)} parses just first entry of a vCard file 14156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa * with multiple vCard entries. 14256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa */ 14356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa public void testParseOne() throws IOException, VCardException { 14456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa InputStream inputStream = 14556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa getContext().getResources().openRawResource(R.raw.v21_multiple_entry); 14656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa try { 14756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa VCardParser parser = new VCardParser_V21(); 14856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa MockVCardInterpreter interpreter = new MockVCardInterpreter(); 14956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa interpreter.addExpectedOrder(Order.START) 15056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.START_ENTRY) 15156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For VERSION 15256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For N 15356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For SOUND 15456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For TEL 15556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For TEL 15656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For TEL 15756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For TEL 15856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.END_ENTRY) 15956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.START_ENTRY) 16056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For VERSION 16156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For N 16256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For SOUND 16356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For TEL 16456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For TEL 16556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For TEL 16656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For TEL 16756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.END_ENTRY) 16856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.START_ENTRY) 16956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For VERSION 17056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For N 17156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For SOUND 17256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For TEL 17356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For TEL 17456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For TEL 17556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For TEL 17656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.END_ENTRY) 17756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.END); 17856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa parser.addInterpreter(interpreter); 17956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa // Use parse() to check we 18056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa parser.parse(inputStream); 18156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa interpreter.verify(); 18256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } finally { 18356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa inputStream.close(); 18456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } 18556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 18656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa inputStream = getContext().getResources().openRawResource(R.raw.v21_multiple_entry); 18756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa try { 18856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa VCardParser parser = new VCardParser_V21(); 18956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa MockVCardInterpreter interpreter = new MockVCardInterpreter(); 19056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa interpreter.addExpectedOrder(Order.START) 19156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.START_ENTRY) 19256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For VERSION 19356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For N 19456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For SOUND 19556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For TEL 19656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For TEL 19756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For TEL 19856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.PROPERTY_CREATED) // For TEL 19956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.END_ENTRY) 20056650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa .addExpectedOrder(Order.END); 20156650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa parser.addInterpreter(interpreter); 20256650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa parser.parseOne(inputStream); 20356650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa interpreter.verify(); 20456650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } finally { 20556650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa inputStream.close(); 20656650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } 20756650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa 20856650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa } 20956650608f09fc75f260c03e00456ef3d1e60c929Daisuke Miyakawa}