/** * Copyright (c) 2009-2011, The HATS Consortium. All rights reserved. * This file is licensed under the terms of the Modified BSD License. */ package abs.backend.java; import org.junit.Assert; import org.junit.Test; import abs.backend.java.codegeneration.JavaCode; public class JavaObservationTest extends JavaBackendTest { @Test public void systemStarted() throws Exception { assertOutputContains("{ }", "SYSTEM STARTED"); } @Test public void mainTerminated() throws Exception { assertOutputContains("{ }", "MAIN TERMINATED"); } @Test public void systemTerminated() throws Exception { assertOutputContains("{ }", "SYSTEM FINISHED"); } @Test public void objectCreated() throws Exception { assertOutputContains("class C { } { new local C(); }", "OBJECT CREATED: C"); } @Test public void fieldValue() throws Exception { assertOutputContains("class FieldClass { String field = \"HELLO WORLD\"; } { new local FieldClass(); }", "FIELD VALUE=HELLO WORLD"); } @Test public void fieldValue2() throws Exception { assertOutputContains("class FieldClass(String field) { } { new local FieldClass(\"HELLO WORLD\"); }", "FIELD VALUE=HELLO WORLD"); } static final String I_AND_C = "interface I { Unit m(); Unit n(String s); Unit k(Foo m);}" + " class C implements I { Unit m() { } Unit n(String s) { } Unit k(Foo m) { }}"; @Test public void taskCreation() throws Exception { assertOutputContains(I_AND_C + " { I i; i = new local C(); i!m();}", "TASK CREATED"); } @Test public void taskCreation2() throws Exception { assertOutputContains(I_AND_C + " { I i; i = new local C(); i!m(); i!n(\"HALLO\"); }", "TASK CREATED"); } @Test public void taskCreation3() throws Exception { assertOutputContains(I_AND_C + " { I i; i = new local C(); i!m(); i!k(Bar(\"HALLO\",\"Welt\")); }", "TASK CREATED"); } static final String STDDATA = "data Foo = Bar(String,String);"; private void assertOutputContains(String absCode, String expectedOutput) throws Exception { JavaCode code = getJavaCode("module JavaTest;" + STDDATA + absCode, Config.WITH_STD_LIB); // System.out.println(java); String output = runJava(code, "-Dabs.systemobserver=" + TestSystemObserver.class.getName()).toString().trim(); Assert.assertTrue("Expected to find " + expectedOutput + ", but output was:\n" + output, output.contains(expectedOutput)); } }