Search in sources :

Example 1 with Test

use of org.whole.lang.tests.model.Test in project whole by wholeplatform.

the class TestsInterpreterVisitor method visit.

@Override
public void visit(TestCase entity) {
    String name = entity.getName().getValue();
    Results results = TestsEntityFactory.instance.createResults();
    printWriter().printf("* %s test case running:\n\n", name);
    try {
        IEntityIterator<BeforeTestCase> beforeIterator = IteratorFactory.<BeforeTestCase>childMatcherIterator().withPattern(BeforeTestCase);
        beforeIterator.reset(entity.getAspects());
        for (BeforeTestCase beforeTestCase : beforeIterator) {
            beforeTestCase.accept(this);
            getResult();
        }
        Tests tests = entity.getTests();
        for (int i = 0; i < tests.wSize(); i++) {
            Test test = tests.get(i);
            if (getBindings().wIsSet("runSingleTest") && getBindings().wGet("runSingleTest") != test)
                continue;
            test.accept(this);
            IntLiteral result = null;
            switch(getResult().wGet(outcome).wEnumValue().getOrdinal()) {
                case OutcomeEnum.ERROR_ord:
                    result = results.getErrors();
                    break;
                case OutcomeEnum.FAILURE_ord:
                    result = results.getFailures();
                    break;
                case OutcomeEnum.SUCCESS_ord:
                    result = results.getSuccesses();
                    break;
                default:
                    throw new WholeIllegalArgumentException("unsupported outcome");
            }
            result.setValue(result.getValue() + 1);
        }
        IEntityIterator<AfterTestCase> afterIterator = IteratorFactory.<AfterTestCase>childMatcherIterator().withPattern(AfterTestCase);
        afterIterator.reset(entity.getAspects());
        for (AfterTestCase afterTestCase : afterIterator) {
            afterTestCase.accept(this);
            getResult();
        }
        boolean testCaseSuccess = results.getErrors().getValue() + results.getFailures().getValue() == 0;
        printWriter().printf("\n* %s test case %s\n", name, testCaseSuccess ? "OK" : "FAILED");
    } catch (OperationCanceledException e) {
        throw e;
    } catch (RuntimeException e) {
        reportError(name, e);
        results.getErrors().setValue(entity.getTests().wSize());
        results.getFailures().setValue(0);
        results.getSuccesses().setValue(0);
    }
    if (EntityUtils.isResolver(entity.getExpectedResults()))
        entity.setExpectedResults(EntityUtils.clone(results));
    if (!Matcher.match(results, entity.getActualResults()))
        entity.setActualResults(results);
    setResult(results);
}
Also used : AfterTestCase(org.whole.lang.tests.model.AfterTestCase) OperationCanceledException(org.whole.lang.operations.OperationCanceledException) WholeIllegalArgumentException(org.whole.lang.exceptions.WholeIllegalArgumentException) Tests(org.whole.lang.tests.model.Tests) Constraint(org.whole.lang.tests.model.Constraint) IWholeRuntimeException(org.whole.lang.exceptions.IWholeRuntimeException) Results(org.whole.lang.tests.model.Results) Test(org.whole.lang.tests.model.Test) BeforeTest(org.whole.lang.tests.model.BeforeTest) AfterTest(org.whole.lang.tests.model.AfterTest) IntLiteral(org.whole.lang.tests.model.IntLiteral) BeforeTestCase(org.whole.lang.tests.model.BeforeTestCase)

Example 2 with Test

use of org.whole.lang.tests.model.Test in project whole by wholeplatform.

the class TestPart method refreshVisuals.

@Override
protected void refreshVisuals() {
    super.refreshVisuals();
    Test entity = getModelEntity();
    getFigure().updateResult(entity.getExpectedResult(), entity.getActualResult());
}
Also used : Test(org.whole.lang.tests.model.Test)

Example 3 with Test

use of org.whole.lang.tests.model.Test in project whole by wholeplatform.

the class TestPart method createFigure.

protected IFigure createFigure() {
    return new TestFigure((event) -> {
        String location = (String) ((Clickable) event.getSource()).getModel().getUserData();
        Test test = getModelEntity();
        IEntity root = EntityUtils.getFragmentRoot(test);
        IEntityPartViewer viewer = getViewer();
        viewer.getControl().getDisplay().asyncExec(() -> viewer.selectAndReveal(EntityUtils.getEntity(root, location)));
    });
}
Also used : Clickable(org.eclipse.draw2d.Clickable) Test(org.whole.lang.tests.model.Test) IEntity(org.whole.lang.model.IEntity) TestFigure(org.whole.lang.tests.ui.figures.TestFigure) IEntityPartViewer(org.whole.lang.ui.viewers.IEntityPartViewer)

Example 4 with Test

use of org.whole.lang.tests.model.Test in project whole by wholeplatform.

the class TestPart method getModelSpecificChildren.

protected List<IEntity> getModelSpecificChildren() {
    Test entity = getModelEntity();
    List<IEntity> list = new ArrayList<IEntity>(3);
    list.add(entity.getDescription());
    list.add(entity.getName());
    list.add(entity.getBody());
    return list;
}
Also used : Test(org.whole.lang.tests.model.Test) IEntity(org.whole.lang.model.IEntity) ArrayList(java.util.ArrayList)

Aggregations

Test (org.whole.lang.tests.model.Test)4 IEntity (org.whole.lang.model.IEntity)2 ArrayList (java.util.ArrayList)1 Clickable (org.eclipse.draw2d.Clickable)1 IWholeRuntimeException (org.whole.lang.exceptions.IWholeRuntimeException)1 WholeIllegalArgumentException (org.whole.lang.exceptions.WholeIllegalArgumentException)1 OperationCanceledException (org.whole.lang.operations.OperationCanceledException)1 AfterTest (org.whole.lang.tests.model.AfterTest)1 AfterTestCase (org.whole.lang.tests.model.AfterTestCase)1 BeforeTest (org.whole.lang.tests.model.BeforeTest)1 BeforeTestCase (org.whole.lang.tests.model.BeforeTestCase)1 Constraint (org.whole.lang.tests.model.Constraint)1 IntLiteral (org.whole.lang.tests.model.IntLiteral)1 Results (org.whole.lang.tests.model.Results)1 Tests (org.whole.lang.tests.model.Tests)1 TestFigure (org.whole.lang.tests.ui.figures.TestFigure)1 IEntityPartViewer (org.whole.lang.ui.viewers.IEntityPartViewer)1