/******************************************************************************* * Copyright (c) 2011 BestSolution.at 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 * * Contributors: * Tom Schindl<tom.schindl@bestsolution.at> - initial API and implementation *******************************************************************************/ package at.bestsolution.efxclipse.tooling.css.jfx.test.validators; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import junit.framework.TestCase; import at.bestsolution.efxclipse.tooling.css.CssDialectExtension.ValidationResult; import at.bestsolution.efxclipse.tooling.css.cssDsl.CssDslFactory; import at.bestsolution.efxclipse.tooling.css.cssDsl.CssDslPackage; import at.bestsolution.efxclipse.tooling.css.cssDsl.expr; import at.bestsolution.efxclipse.tooling.css.cssDsl.function; import at.bestsolution.efxclipse.tooling.css.cssDsl.term; import at.bestsolution.efxclipse.tooling.css.cssDsl.termGroup; import at.bestsolution.efxclipse.tooling.css.jfx.JFXDialectExtension; import at.bestsolution.efxclipse.tooling.css.jfx.validators.LinearGradientValidator; /** * @author Tom Schindl * */ public class LinearGradientValidatorTestCase extends TestCase { public void test_validateLinearGradient_ColorStopOnly() { // red 100% { term t1 = CssDslFactory.eINSTANCE.createterm(); t1.setIdentifier("red"); term t2 = CssDslFactory.eINSTANCE.createterm(); t2.setNumber("100%"); termGroup group = CssDslFactory.eINSTANCE.createtermGroup(); group.getTerms().addAll(Arrays.asList(t1, t2)); expr expr = CssDslFactory.eINSTANCE.createexpr(); expr.getTermGroups().add(group); function function = CssDslFactory.eINSTANCE.createfunction(); function.setName("linear-gradient"); function.setExpression(expr); term term = CssDslFactory.eINSTANCE.createterm(); term.setFunction(function); List<ValidationResult> results = new ArrayList<ValidationResult>(); LinearGradientValidator.validateLinearGradient(function, results); assertEquals(0, results.size()); } // red 0%, blue 50% { term t1 = CssDslFactory.eINSTANCE.createterm(); t1.setIdentifier("red"); term t2 = CssDslFactory.eINSTANCE.createterm(); t2.setNumber("0%"); termGroup colorStop1 = CssDslFactory.eINSTANCE.createtermGroup(); colorStop1.getTerms().addAll(Arrays.asList(t1, t2)); term t3 = CssDslFactory.eINSTANCE.createterm(); t3.setIdentifier("blue"); term t4 = CssDslFactory.eINSTANCE.createterm(); t4.setNumber("100%"); termGroup colorStop2 = CssDslFactory.eINSTANCE.createtermGroup(); colorStop2.getTerms().addAll(Arrays.asList(t3, t4)); expr expr = CssDslFactory.eINSTANCE.createexpr(); expr.getTermGroups().add(colorStop1); expr.getTermGroups().add(colorStop2); function function = CssDslFactory.eINSTANCE.createfunction(); function.setName("linear-gradient"); function.setExpression(expr); term term = CssDslFactory.eINSTANCE.createterm(); term.setFunction(function); List<ValidationResult> results = new ArrayList<ValidationResult>(); LinearGradientValidator.validateLinearGradient(function, results); assertEquals(0, results.size()); } // black 60%, #141414 60.1%, black 100% { term t1 = CssDslFactory.eINSTANCE.createterm(); t1.setIdentifier("black"); term t2 = CssDslFactory.eINSTANCE.createterm(); t2.setNumber("60%"); termGroup colorStop1 = CssDslFactory.eINSTANCE.createtermGroup(); colorStop1.getTerms().addAll(Arrays.asList(t1, t2)); term t3 = CssDslFactory.eINSTANCE.createterm(); t3.setHexColor("#141414"); term t4 = CssDslFactory.eINSTANCE.createterm(); t4.setNumber("60.1%"); termGroup colorStop2 = CssDslFactory.eINSTANCE.createtermGroup(); colorStop2.getTerms().addAll(Arrays.asList(t3, t4)); term t5 = CssDslFactory.eINSTANCE.createterm(); t5.setIdentifier("black"); term t6 = CssDslFactory.eINSTANCE.createterm(); t6.setNumber("100%"); termGroup colorStop3 = CssDslFactory.eINSTANCE.createtermGroup(); colorStop3.getTerms().addAll(Arrays.asList(t5, t6)); expr expr = CssDslFactory.eINSTANCE.createexpr(); expr.getTermGroups().add(colorStop1); expr.getTermGroups().add(colorStop2); expr.getTermGroups().add(colorStop3); function function = CssDslFactory.eINSTANCE.createfunction(); function.setName("linear-gradient"); function.setExpression(expr); term term = CssDslFactory.eINSTANCE.createterm(); term.setFunction(function); List<ValidationResult> results = new ArrayList<ValidationResult>(); LinearGradientValidator.validateLinearGradient(function, results); assertEquals(0, results.size()); } // red 10 ("px","mm","cm","in","pt","pc","em","ex") for (String length : JFXDialectExtension.sizeUnits()) { term t1 = CssDslFactory.eINSTANCE.createterm(); t1.setIdentifier("red"); term t2 = CssDslFactory.eINSTANCE.createterm(); t2.setNumber("10" + length); termGroup group = CssDslFactory.eINSTANCE.createtermGroup(); group.getTerms().addAll(Arrays.asList(t1, t2)); expr expr = CssDslFactory.eINSTANCE.createexpr(); expr.getTermGroups().add(group); function function = CssDslFactory.eINSTANCE.createfunction(); function.setName("linear-gradient"); function.setExpression(expr); term term = CssDslFactory.eINSTANCE.createterm(); term.setFunction(function); List<ValidationResult> results = new ArrayList<ValidationResult>(); LinearGradientValidator.validateLinearGradient(function, results); assertEquals(0, results.size()); } // red 101% == Invalid { term t1 = CssDslFactory.eINSTANCE.createterm(); t1.setIdentifier("red"); term t2 = CssDslFactory.eINSTANCE.createterm(); t2.setNumber("101%"); termGroup group = CssDslFactory.eINSTANCE.createtermGroup(); group.getTerms().addAll(Arrays.asList(t1, t2)); expr expr = CssDslFactory.eINSTANCE.createexpr(); expr.getTermGroups().add(group); function function = CssDslFactory.eINSTANCE.createfunction(); function.setName("linear-gradient"); function.setExpression(expr); term term = CssDslFactory.eINSTANCE.createterm(); term.setFunction(function); List<ValidationResult> results = new ArrayList<ValidationResult>(); LinearGradientValidator.validateLinearGradient(function, results); assertEquals(1, results.size()); assertEquals(t2, results.get(0).object); assertEquals(CssDslPackage.Literals.TERM__NUMBER, results.get(0).feature); } // red 101%, red -1% == Invalid { term t1 = CssDslFactory.eINSTANCE.createterm(); t1.setIdentifier("red"); term t2 = CssDslFactory.eINSTANCE.createterm(); t2.setNumber("101%"); termGroup group1 = CssDslFactory.eINSTANCE.createtermGroup(); group1.getTerms().addAll(Arrays.asList(t1, t2)); term t3 = CssDslFactory.eINSTANCE.createterm(); t3.setIdentifier("red"); term t4 = CssDslFactory.eINSTANCE.createterm(); t4.setNumber("-1%"); termGroup group2 = CssDslFactory.eINSTANCE.createtermGroup(); group2.getTerms().addAll(Arrays.asList(t3, t4)); expr expr = CssDslFactory.eINSTANCE.createexpr(); expr.getTermGroups().addAll(Arrays.asList(group1, group2)); function function = CssDslFactory.eINSTANCE.createfunction(); function.setName("linear-gradient"); function.setExpression(expr); term term = CssDslFactory.eINSTANCE.createterm(); term.setFunction(function); List<ValidationResult> results = new ArrayList<ValidationResult>(); LinearGradientValidator.validateLinearGradient(function, results); assertEquals(2, results.size()); assertEquals(t2, results.get(0).object); assertEquals(CssDslPackage.Literals.TERM__NUMBER, results.get(0).feature); assertEquals(t4, results.get(1).object); assertEquals(CssDslPackage.Literals.TERM__NUMBER, results.get(1).feature); } } public void test_validateLinearGradient_FromTo() { // from 100px 100px to 200px 200px, red 100% { term t1 = CssDslFactory.eINSTANCE.createterm(); t1.setIdentifier("from"); term t2 = CssDslFactory.eINSTANCE.createterm(); t2.setNumber("100px"); term t3 = CssDslFactory.eINSTANCE.createterm(); t3.setNumber("100px"); term t4 = CssDslFactory.eINSTANCE.createterm(); t4.setIdentifier("to"); term t5 = CssDslFactory.eINSTANCE.createterm(); t5.setNumber("200px"); term t6 = CssDslFactory.eINSTANCE.createterm(); t6.setNumber("200px"); termGroup fromToGroup = CssDslFactory.eINSTANCE.createtermGroup(); fromToGroup.getTerms() .addAll(Arrays.asList(t1, t2, t3, t4, t5, t6)); term t7 = CssDslFactory.eINSTANCE.createterm(); t7.setIdentifier("red"); term t8 = CssDslFactory.eINSTANCE.createterm(); t8.setNumber("100%"); termGroup stopGroup = CssDslFactory.eINSTANCE.createtermGroup(); stopGroup.getTerms().addAll(Arrays.asList(t7, t8)); expr expr = CssDslFactory.eINSTANCE.createexpr(); expr.getTermGroups().add(fromToGroup); expr.getTermGroups().add(stopGroup); function function = CssDslFactory.eINSTANCE.createfunction(); function.setName("linear-gradient"); function.setExpression(expr); term term = CssDslFactory.eINSTANCE.createterm(); term.setFunction(function); List<ValidationResult> results = new ArrayList<ValidationResult>(); LinearGradientValidator.validateLinearGradient(function, results); assertEquals(0, results.size()); } // from 100px 100px to 200px 200px, red 0%, red 100% { term t1 = CssDslFactory.eINSTANCE.createterm(); t1.setIdentifier("from"); term t2 = CssDslFactory.eINSTANCE.createterm(); t2.setNumber("100px"); term t3 = CssDslFactory.eINSTANCE.createterm(); t3.setNumber("100px"); term t4 = CssDslFactory.eINSTANCE.createterm(); t4.setIdentifier("to"); term t5 = CssDslFactory.eINSTANCE.createterm(); t5.setNumber("200px"); term t6 = CssDslFactory.eINSTANCE.createterm(); t6.setNumber("200px"); termGroup fromToGroup = CssDslFactory.eINSTANCE.createtermGroup(); fromToGroup.getTerms() .addAll(Arrays.asList(t1, t2, t3, t4, t5, t6)); term t7 = CssDslFactory.eINSTANCE.createterm(); t7.setIdentifier("red"); term t8 = CssDslFactory.eINSTANCE.createterm(); t8.setNumber("0%"); termGroup stopGroup1 = CssDslFactory.eINSTANCE.createtermGroup(); stopGroup1.getTerms().addAll(Arrays.asList(t7, t8)); term t9 = CssDslFactory.eINSTANCE.createterm(); t9.setIdentifier("red"); term t10 = CssDslFactory.eINSTANCE.createterm(); t10.setNumber("100%"); termGroup stopGroup2 = CssDslFactory.eINSTANCE.createtermGroup(); stopGroup2.getTerms().addAll(Arrays.asList(t9, t10)); expr expr = CssDslFactory.eINSTANCE.createexpr(); expr.getTermGroups().add(fromToGroup); expr.getTermGroups().add(stopGroup1); expr.getTermGroups().add(stopGroup2); function function = CssDslFactory.eINSTANCE.createfunction(); function.setName("linear-gradient"); function.setExpression(expr); term term = CssDslFactory.eINSTANCE.createterm(); term.setFunction(function); List<ValidationResult> results = new ArrayList<ValidationResult>(); LinearGradientValidator.validateLinearGradient(function, results); assertEquals(0, results.size()); } // from 100px 100px to 200px 200px, repeat, red 0%, red 100% { term t1 = CssDslFactory.eINSTANCE.createterm(); t1.setIdentifier("from"); term t2 = CssDslFactory.eINSTANCE.createterm(); t2.setNumber("100px"); term t3 = CssDslFactory.eINSTANCE.createterm(); t3.setNumber("100px"); term t4 = CssDslFactory.eINSTANCE.createterm(); t4.setIdentifier("to"); term t5 = CssDslFactory.eINSTANCE.createterm(); t5.setNumber("200px"); term t6 = CssDslFactory.eINSTANCE.createterm(); t6.setNumber("200px"); termGroup fromToGroup = CssDslFactory.eINSTANCE.createtermGroup(); fromToGroup.getTerms() .addAll(Arrays.asList(t1, t2, t3, t4, t5, t6)); term repeatTerm = CssDslFactory.eINSTANCE.createterm(); repeatTerm.setIdentifier("repeat"); termGroup repeatGroup = CssDslFactory.eINSTANCE.createtermGroup(); repeatGroup.getTerms().add(repeatTerm); term t7 = CssDslFactory.eINSTANCE.createterm(); t7.setIdentifier("red"); term t8 = CssDslFactory.eINSTANCE.createterm(); t8.setNumber("0%"); termGroup stopGroup1 = CssDslFactory.eINSTANCE.createtermGroup(); stopGroup1.getTerms().addAll(Arrays.asList(t7, t8)); term t9 = CssDslFactory.eINSTANCE.createterm(); t9.setIdentifier("red"); term t10 = CssDslFactory.eINSTANCE.createterm(); t10.setNumber("100%"); termGroup stopGroup2 = CssDslFactory.eINSTANCE.createtermGroup(); stopGroup2.getTerms().addAll(Arrays.asList(t9, t10)); expr expr = CssDslFactory.eINSTANCE.createexpr(); expr.getTermGroups().add(fromToGroup); expr.getTermGroups().add(repeatGroup); expr.getTermGroups().add(stopGroup1); expr.getTermGroups().add(stopGroup2); function function = CssDslFactory.eINSTANCE.createfunction(); function.setName("linear-gradient"); function.setExpression(expr); term term = CssDslFactory.eINSTANCE.createterm(); term.setFunction(function); List<ValidationResult> results = new ArrayList<ValidationResult>(); LinearGradientValidator.validateLinearGradient(function, results); assertEquals(results.toString(), 0, results.size()); } // from 100px 100px to 200px 200px, reflect, red 0%, red 100% { term t1 = CssDslFactory.eINSTANCE.createterm(); t1.setIdentifier("from"); term t2 = CssDslFactory.eINSTANCE.createterm(); t2.setNumber("100px"); term t3 = CssDslFactory.eINSTANCE.createterm(); t3.setNumber("100px"); term t4 = CssDslFactory.eINSTANCE.createterm(); t4.setIdentifier("to"); term t5 = CssDslFactory.eINSTANCE.createterm(); t5.setNumber("200px"); term t6 = CssDslFactory.eINSTANCE.createterm(); t6.setNumber("200px"); termGroup fromToGroup = CssDslFactory.eINSTANCE.createtermGroup(); fromToGroup.getTerms() .addAll(Arrays.asList(t1, t2, t3, t4, t5, t6)); term repeatTerm = CssDslFactory.eINSTANCE.createterm(); repeatTerm.setIdentifier("reflect"); termGroup repeatGroup = CssDslFactory.eINSTANCE.createtermGroup(); repeatGroup.getTerms().add(repeatTerm); term t7 = CssDslFactory.eINSTANCE.createterm(); t7.setIdentifier("red"); term t8 = CssDslFactory.eINSTANCE.createterm(); t8.setNumber("0%"); termGroup stopGroup1 = CssDslFactory.eINSTANCE.createtermGroup(); stopGroup1.getTerms().addAll(Arrays.asList(t7, t8)); term t9 = CssDslFactory.eINSTANCE.createterm(); t9.setIdentifier("red"); term t10 = CssDslFactory.eINSTANCE.createterm(); t10.setNumber("100%"); termGroup stopGroup2 = CssDslFactory.eINSTANCE.createtermGroup(); stopGroup2.getTerms().addAll(Arrays.asList(t9, t10)); expr expr = CssDslFactory.eINSTANCE.createexpr(); expr.getTermGroups().add(fromToGroup); expr.getTermGroups().add(repeatGroup); expr.getTermGroups().add(stopGroup1); expr.getTermGroups().add(stopGroup2); function function = CssDslFactory.eINSTANCE.createfunction(); function.setName("linear-gradient"); function.setExpression(expr); term term = CssDslFactory.eINSTANCE.createterm(); term.setFunction(function); List<ValidationResult> results = new ArrayList<ValidationResult>(); LinearGradientValidator.validateLinearGradient(function, results); assertEquals(results.toString(), 0, results.size()); } // from 100px 100px to 200px 200px, unknown, red 0%, red 100% == Invalid { term t1 = CssDslFactory.eINSTANCE.createterm(); t1.setIdentifier("from"); term t2 = CssDslFactory.eINSTANCE.createterm(); t2.setNumber("100px"); term t3 = CssDslFactory.eINSTANCE.createterm(); t3.setNumber("100px"); term t4 = CssDslFactory.eINSTANCE.createterm(); t4.setIdentifier("to"); term t5 = CssDslFactory.eINSTANCE.createterm(); t5.setNumber("200px"); term t6 = CssDslFactory.eINSTANCE.createterm(); t6.setNumber("200px"); termGroup fromToGroup = CssDslFactory.eINSTANCE.createtermGroup(); fromToGroup.getTerms() .addAll(Arrays.asList(t1, t2, t3, t4, t5, t6)); term repeatTerm = CssDslFactory.eINSTANCE.createterm(); repeatTerm.setIdentifier("unknown"); termGroup repeatGroup = CssDslFactory.eINSTANCE.createtermGroup(); repeatGroup.getTerms().add(repeatTerm); term t7 = CssDslFactory.eINSTANCE.createterm(); t7.setIdentifier("red"); term t8 = CssDslFactory.eINSTANCE.createterm(); t8.setNumber("0%"); termGroup stopGroup1 = CssDslFactory.eINSTANCE.createtermGroup(); stopGroup1.getTerms().addAll(Arrays.asList(t7, t8)); term t9 = CssDslFactory.eINSTANCE.createterm(); t9.setIdentifier("red"); term t10 = CssDslFactory.eINSTANCE.createterm(); t10.setNumber("100%"); termGroup stopGroup2 = CssDslFactory.eINSTANCE.createtermGroup(); stopGroup2.getTerms().addAll(Arrays.asList(t9, t10)); expr expr = CssDslFactory.eINSTANCE.createexpr(); expr.getTermGroups().add(fromToGroup); expr.getTermGroups().add(repeatGroup); expr.getTermGroups().add(stopGroup1); expr.getTermGroups().add(stopGroup2); function function = CssDslFactory.eINSTANCE.createfunction(); function.setName("linear-gradient"); function.setExpression(expr); term term = CssDslFactory.eINSTANCE.createterm(); term.setFunction(function); List<ValidationResult> results = new ArrayList<ValidationResult>(); LinearGradientValidator.validateLinearGradient(function, results); assertEquals(results.toString(), 1, results.size()); assertEquals(repeatTerm, results.get(0).object); assertEquals(CssDslPackage.Literals.TERM__IDENTIFIER, results.get(0).feature); } // from 100px 100px to 200px 200px { term t1 = CssDslFactory.eINSTANCE.createterm(); t1.setIdentifier("from"); term t2 = CssDslFactory.eINSTANCE.createterm(); t2.setNumber("100px"); term t3 = CssDslFactory.eINSTANCE.createterm(); t3.setNumber("100px"); term t4 = CssDslFactory.eINSTANCE.createterm(); t4.setIdentifier("to"); term t5 = CssDslFactory.eINSTANCE.createterm(); t5.setNumber("200px"); term t6 = CssDslFactory.eINSTANCE.createterm(); t6.setNumber("200px"); termGroup fromToGroup = CssDslFactory.eINSTANCE.createtermGroup(); fromToGroup.getTerms() .addAll(Arrays.asList(t1, t2, t3, t4, t5, t6)); expr expr = CssDslFactory.eINSTANCE.createexpr(); expr.getTermGroups().add(fromToGroup); function function = CssDslFactory.eINSTANCE.createfunction(); function.setName("linear-gradient"); function.setExpression(expr); term term = CssDslFactory.eINSTANCE.createterm(); term.setFunction(function); List<ValidationResult> results = new ArrayList<ValidationResult>(); LinearGradientValidator.validateLinearGradient(function, results); assertEquals(results.toString(), 1, results.size()); assertEquals(function, results.get(0).object); assertEquals(CssDslPackage.Literals.FUNCTION__EXPRESSION, results.get(0).feature); } // from 100px 100px to 200px, red 0%, red 100% { term t1 = CssDslFactory.eINSTANCE.createterm(); t1.setIdentifier("from"); term t2 = CssDslFactory.eINSTANCE.createterm(); t2.setNumber("100px"); term t3 = CssDslFactory.eINSTANCE.createterm(); t3.setNumber("100px"); term t4 = CssDslFactory.eINSTANCE.createterm(); t4.setIdentifier("to"); term t5 = CssDslFactory.eINSTANCE.createterm(); t5.setNumber("200px"); termGroup fromToGroup = CssDslFactory.eINSTANCE.createtermGroup(); fromToGroup.getTerms().addAll(Arrays.asList(t1, t2, t3, t4, t5)); term t7 = CssDslFactory.eINSTANCE.createterm(); t7.setIdentifier("red"); term t8 = CssDslFactory.eINSTANCE.createterm(); t8.setNumber("0%"); termGroup stopGroup1 = CssDslFactory.eINSTANCE.createtermGroup(); stopGroup1.getTerms().addAll(Arrays.asList(t7, t8)); term t9 = CssDslFactory.eINSTANCE.createterm(); t9.setIdentifier("red"); term t10 = CssDslFactory.eINSTANCE.createterm(); t10.setNumber("100%"); termGroup stopGroup2 = CssDslFactory.eINSTANCE.createtermGroup(); stopGroup2.getTerms().addAll(Arrays.asList(t9, t10)); expr expr = CssDslFactory.eINSTANCE.createexpr(); expr.getTermGroups().add(fromToGroup); expr.getTermGroups().add(stopGroup1); expr.getTermGroups().add(stopGroup2); function function = CssDslFactory.eINSTANCE.createfunction(); function.setName("linear-gradient"); function.setExpression(expr); term term = CssDslFactory.eINSTANCE.createterm(); term.setFunction(function); List<ValidationResult> results = new ArrayList<ValidationResult>(); LinearGradientValidator.validateLinearGradient(function, results); assertEquals(1, results.size()); assertEquals(fromToGroup, results.get(0).object); assertNull(results.get(0).feature); } // from 100px 100px to 200px 200px, red { term t1 = CssDslFactory.eINSTANCE.createterm(); t1.setIdentifier("from"); term t2 = CssDslFactory.eINSTANCE.createterm(); t2.setNumber("100px"); term t3 = CssDslFactory.eINSTANCE.createterm(); t3.setNumber("100px"); term t4 = CssDslFactory.eINSTANCE.createterm(); t4.setIdentifier("to"); term t5 = CssDslFactory.eINSTANCE.createterm(); t5.setNumber("200px"); term t6 = CssDslFactory.eINSTANCE.createterm(); t6.setNumber("200px"); termGroup fromToGroup = CssDslFactory.eINSTANCE.createtermGroup(); fromToGroup.getTerms() .addAll(Arrays.asList(t1, t2, t3, t4, t5, t6)); term t7 = CssDslFactory.eINSTANCE.createterm(); t7.setIdentifier("red"); termGroup stopGroup = CssDslFactory.eINSTANCE.createtermGroup(); stopGroup.getTerms().addAll(Arrays.asList(t7)); expr expr = CssDslFactory.eINSTANCE.createexpr(); expr.getTermGroups().add(fromToGroup); expr.getTermGroups().add(stopGroup); function function = CssDslFactory.eINSTANCE.createfunction(); function.setName("linear-gradient"); function.setExpression(expr); term term = CssDslFactory.eINSTANCE.createterm(); term.setFunction(function); List<ValidationResult> results = new ArrayList<ValidationResult>(); LinearGradientValidator.validateLinearGradient(function, results); assertEquals(0, results.size()); } } public void test_validateLinearGradient_To() { // to bottom, red 100% { term t1 = CssDslFactory.eINSTANCE.createterm(); t1.setIdentifier("to"); term t2 = CssDslFactory.eINSTANCE.createterm(); t2.setIdentifier("bottom"); termGroup toGroup = CssDslFactory.eINSTANCE.createtermGroup(); toGroup.getTerms().addAll(Arrays.asList(t1, t2)); term t3 = CssDslFactory.eINSTANCE.createterm(); t3.setIdentifier("red"); term t4 = CssDslFactory.eINSTANCE.createterm(); t4.setNumber("0%"); termGroup stopGroup = CssDslFactory.eINSTANCE.createtermGroup(); stopGroup.getTerms().addAll(Arrays.asList(t3, t4)); expr expr = CssDslFactory.eINSTANCE.createexpr(); expr.getTermGroups().add(toGroup); expr.getTermGroups().add(stopGroup); function function = CssDslFactory.eINSTANCE.createfunction(); function.setName("linear-gradient"); function.setExpression(expr); term term = CssDslFactory.eINSTANCE.createterm(); term.setFunction(function); List<ValidationResult> results = new ArrayList<ValidationResult>(); LinearGradientValidator.validateLinearGradient(function, results); assertEquals(0, results.size()); } // to left, red 100% { term t1 = CssDslFactory.eINSTANCE.createterm(); t1.setIdentifier("to"); term t2 = CssDslFactory.eINSTANCE.createterm(); t2.setIdentifier("left"); termGroup toGroup = CssDslFactory.eINSTANCE.createtermGroup(); toGroup.getTerms().addAll(Arrays.asList(t1, t2)); term t3 = CssDslFactory.eINSTANCE.createterm(); t3.setIdentifier("red"); term t4 = CssDslFactory.eINSTANCE.createterm(); t4.setNumber("0%"); termGroup stopGroup = CssDslFactory.eINSTANCE.createtermGroup(); stopGroup.getTerms().addAll(Arrays.asList(t3, t4)); expr expr = CssDslFactory.eINSTANCE.createexpr(); expr.getTermGroups().add(toGroup); expr.getTermGroups().add(stopGroup); function function = CssDslFactory.eINSTANCE.createfunction(); function.setName("linear-gradient"); function.setExpression(expr); term term = CssDslFactory.eINSTANCE.createterm(); term.setFunction(function); List<ValidationResult> results = new ArrayList<ValidationResult>(); LinearGradientValidator.validateLinearGradient(function, results); assertEquals(0, results.size()); } } }