/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jena.rdfxml.xmlinput.states; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import org.apache.jena.rdfxml.xmlinput.states.FrameI ; public class TestEventList extends TestCase implements Test { final EventRecord record1, record2; public TestEventList(String nm, EventRecord r1, EventRecord r2) { super(nm); record1 = r1; record2 = r2; } private void check(String start, EventRecord first, EventRecord second) { Class< ? extends FrameI> f = TestData.toState(start); String ev[] = new String[first.startEvents.length + second.startEvents.length]; System.arraycopy(first.startEvents, 0, ev, 0, first.startEvents.length); System.arraycopy(second.startEvents, 0, ev, first.startEvents.length, second.startEvents.length); EventList events = new EventList(ev); events.expectAnException(second.rsltState.equals("!")); events.expectAnError(second.rsltState.equals("?")); events.test(f); if (second.rsltState.equals("!")) assertTrue("expected an exception", events.testException); else if (second.rsltState.equals("?")) assertTrue("expected an error or warning", events.testFailure); else if (events.testFailure) fail("parse had unexpected warning or error"); else if (events.testException) fail("parse had unexpected exception"); else { assertEquals("end state", events.testResult.getClass(), TestData .toState(second.rsltState)); TestData.xmlHandler.check(second); TestData.testFrame.check(second); } } @Override protected void runTest() { String state = record1 instanceof FullEventRecord ? ((FullEventRecord) record1).state : ((FullEventRecord) record2).state; check(state, record1, record2); // for (int i=0;i<record.moreCharacter.length;i++) // check(record.state, record, record.moreCharacter[i]); } static EventRecord dummyEvent = new EventRecord(); static { dummyEvent.startEvents = new String[0]; } public static Test create(String line, String[] fields) { FullEventRecord ev = new FullEventRecord(fields); if (ev.rsltState.length() == 1) { return new TestEventList(line, dummyEvent, ev); } TestSuite rslt = new TestSuite(); rslt.setName(ev.state + " " + ev.toEventString()); rslt.addTest(new TestEventList("$ " + ev.toResultString(), dummyEvent, ev)); for (int i = 0; i < ev.moreCharacter.length; i++) rslt.addTest(new TestEventList(ev.moreCharacter[i] .toEventString() + " $ " + ev.moreCharacter[i].toResultString(), ev, ev.moreCharacter[i])); return rslt; } }