/** * Copyright (c) 2012 BMW Car IT and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.jnario.jnario.tests.unit.doc; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.eclipse.xtext.xbase.lib.CollectionLiterals; import org.eclipse.xtext.xbase.lib.Functions.Function1; import org.eclipse.xtext.xbase.lib.ListExtensions; import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; import org.jnario.doc.Filter; import org.jnario.doc.FilterExtractor; import org.jnario.doc.FilteringResult; import org.jnario.jnario.tests.unit.doc.FilterExtractorSpecFilterCreation; import org.jnario.jnario.tests.unit.doc.FilterExtractorSpecFilterExtractions; import org.jnario.lib.Assert; import org.jnario.lib.Each; import org.jnario.lib.ExampleTable; import org.jnario.lib.Should; import org.jnario.runner.ExampleGroupRunner; import org.jnario.runner.Named; import org.jnario.runner.Order; import org.jnario.runner.Subject; import org.junit.Test; import org.junit.runner.RunWith; @Named("FilterExtractor") @RunWith(ExampleGroupRunner.class) @SuppressWarnings("all") public class FilterExtractorSpec { @Subject public FilterExtractor subject; public ExampleTable<FilterExtractorSpecFilterExtractions> _initFilterExtractorSpecFilterExtractions() { return ExampleTable.create("filterExtractions", Arrays.asList("input", "resultString"), new FilterExtractorSpecFilterExtractions( Arrays.asList("\"\"", "\"\""), _initFilterExtractorSpecFilterExtractionsCell0(), _initFilterExtractorSpecFilterExtractionsCell1()), new FilterExtractorSpecFilterExtractions( Arrays.asList("\"string\"", "\"string\""), _initFilterExtractorSpecFilterExtractionsCell2(), _initFilterExtractorSpecFilterExtractionsCell3()), new FilterExtractorSpecFilterExtractions( Arrays.asList("\"@filter(bbb)\"", "\"\""), _initFilterExtractorSpecFilterExtractionsCell4(), _initFilterExtractorSpecFilterExtractionsCell5()), new FilterExtractorSpecFilterExtractions( Arrays.asList("\"text @filter(bbb) text\"", "\"text text\""), _initFilterExtractorSpecFilterExtractionsCell6(), _initFilterExtractorSpecFilterExtractionsCell7()), new FilterExtractorSpecFilterExtractions( Arrays.asList("\"text@filter(bbb) text\"", "\"text@filter(bbb) text\""), _initFilterExtractorSpecFilterExtractionsCell8(), _initFilterExtractorSpecFilterExtractionsCell9()), new FilterExtractorSpecFilterExtractions( Arrays.asList("\"text @filter(bbb) text @filter(.*) text\"", "\"text text text\""), _initFilterExtractorSpecFilterExtractionsCell10(), _initFilterExtractorSpecFilterExtractionsCell11()) ); } protected ExampleTable<FilterExtractorSpecFilterExtractions> filterExtractions = _initFilterExtractorSpecFilterExtractions(); public String _initFilterExtractorSpecFilterExtractionsCell0() { return ""; } public String _initFilterExtractorSpecFilterExtractionsCell1() { return ""; } public String _initFilterExtractorSpecFilterExtractionsCell2() { return "string"; } public String _initFilterExtractorSpecFilterExtractionsCell3() { return "string"; } public String _initFilterExtractorSpecFilterExtractionsCell4() { return "@filter(bbb)"; } public String _initFilterExtractorSpecFilterExtractionsCell5() { return ""; } public String _initFilterExtractorSpecFilterExtractionsCell6() { return "text @filter(bbb) text"; } public String _initFilterExtractorSpecFilterExtractionsCell7() { return "text text"; } public String _initFilterExtractorSpecFilterExtractionsCell8() { return "text@filter(bbb) text"; } public String _initFilterExtractorSpecFilterExtractionsCell9() { return "text@filter(bbb) text"; } public String _initFilterExtractorSpecFilterExtractionsCell10() { return "text @filter(bbb) text @filter(.*) text"; } public String _initFilterExtractorSpecFilterExtractionsCell11() { return "text text text"; } public ExampleTable<FilterExtractorSpecFilterCreation> _initFilterExtractorSpecFilterCreation() { return ExampleTable.create("filterCreation", Arrays.asList("input", "resultingFilters"), new FilterExtractorSpecFilterCreation( Arrays.asList("null", "<String>emptyList"), null, _initFilterExtractorSpecFilterCreationCell1()), new FilterExtractorSpecFilterCreation( Arrays.asList("\"string\"", "<String>emptyList"), _initFilterExtractorSpecFilterCreationCell2(), _initFilterExtractorSpecFilterCreationCell3()), new FilterExtractorSpecFilterCreation( Arrays.asList("\"@filter(bbb)\"", "newArrayList(\"bbb\")"), _initFilterExtractorSpecFilterCreationCell4(), _initFilterExtractorSpecFilterCreationCell5()), new FilterExtractorSpecFilterCreation( Arrays.asList("\"text @filter(bbb) text @filter(.*)\"", "newArrayList(\"bbb\", \".*\")"), _initFilterExtractorSpecFilterCreationCell6(), _initFilterExtractorSpecFilterCreationCell7()) ); } protected ExampleTable<FilterExtractorSpecFilterCreation> filterCreation = _initFilterExtractorSpecFilterCreation(); public Object _initFilterExtractorSpecFilterCreationCell0() { return null; } public List<String> _initFilterExtractorSpecFilterCreationCell1() { List<String> _emptyList = CollectionLiterals.<String>emptyList(); return _emptyList; } public String _initFilterExtractorSpecFilterCreationCell2() { return "string"; } public List<String> _initFilterExtractorSpecFilterCreationCell3() { List<String> _emptyList = CollectionLiterals.<String>emptyList(); return _emptyList; } public String _initFilterExtractorSpecFilterCreationCell4() { return "@filter(bbb)"; } public ArrayList<String> _initFilterExtractorSpecFilterCreationCell5() { ArrayList<String> _newArrayList = CollectionLiterals.<String>newArrayList("bbb"); return _newArrayList; } public String _initFilterExtractorSpecFilterCreationCell6() { return "text @filter(bbb) text @filter(.*)"; } public ArrayList<String> _initFilterExtractorSpecFilterCreationCell7() { ArrayList<String> _newArrayList = CollectionLiterals.<String>newArrayList("bbb", ".*"); return _newArrayList; } @Test @Named("should remove all filter annotations from a string") @Order(1) public void _shouldRemoveAllFilterAnnotationsFromAString() throws Exception { final Procedure1<FilterExtractorSpecFilterExtractions> _function = new Procedure1<FilterExtractorSpecFilterExtractions>() { public void apply(final FilterExtractorSpecFilterExtractions it) { String _input = it.getInput(); String _stringAfterExtract = FilterExtractorSpec.this.stringAfterExtract(_input); String _resultString = it.getResultString(); Assert.assertTrue("\nExpected stringAfterExtract(input) => resultString but" + "\n stringAfterExtract(input) is " + new org.hamcrest.StringDescription().appendValue(_stringAfterExtract).toString() + "\n input is " + new org.hamcrest.StringDescription().appendValue(_input).toString() + "\n resultString is " + new org.hamcrest.StringDescription().appendValue(_resultString).toString() + "\n", Should.<String>operator_doubleArrow(_stringAfterExtract, _resultString)); } }; Each.<FilterExtractorSpecFilterExtractions>forEach(this.filterExtractions, _function); } @Test @Named("should extract and create filters") @Order(2) public void _shouldExtractAndCreateFilters() throws Exception { final Procedure1<FilterExtractorSpecFilterCreation> _function = new Procedure1<FilterExtractorSpecFilterCreation>() { public void apply(final FilterExtractorSpecFilterCreation it) { String _input = it.getInput(); List<String> _extractedFilters = FilterExtractorSpec.this.extractedFilters(_input); List<String> _resultingFilters = it.getResultingFilters(); Assert.assertTrue("\nExpected extractedFilters(input) => resultingFilters but" + "\n extractedFilters(input) is " + new org.hamcrest.StringDescription().appendValue(_extractedFilters).toString() + "\n input is " + new org.hamcrest.StringDescription().appendValue(_input).toString() + "\n resultingFilters is " + new org.hamcrest.StringDescription().appendValue(_resultingFilters).toString() + "\n", Should.<List<String>>operator_doubleArrow(_extractedFilters, _resultingFilters)); } }; Each.<FilterExtractorSpecFilterCreation>forEach(this.filterCreation, _function); } public String stringAfterExtract(final String input) { FilteringResult _apply = this.subject.apply(input); return _apply.getString(); } public List<String> extractedFilters(final String input) { FilteringResult _apply = this.subject.apply(input); List<Filter> _filters = _apply.getFilters(); final Function1<Filter, String> _function = new Function1<Filter, String>() { public String apply(final Filter it) { return it.toString(); } }; return ListExtensions.<Filter, String>map(_filters, _function); } }