You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pi...@apache.org on 2014/10/05 11:05:28 UTC
[17/30] git commit: [flex-tlf] [refs/heads/develop] - Migrate
AllCharAttributeTest to Flex Unit 4
Migrate AllCharAttributeTest to Flex Unit 4
Project: http://git-wip-us.apache.org/repos/asf/flex-tlf/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-tlf/commit/2b0067b7
Tree: http://git-wip-us.apache.org/repos/asf/flex-tlf/tree/2b0067b7
Diff: http://git-wip-us.apache.org/repos/asf/flex-tlf/diff/2b0067b7
Branch: refs/heads/develop
Commit: 2b0067b7de49ec926def1d65711c95917d2dc89e
Parents: 98bebb2
Author: piotrz <pi...@gmail.com>
Authored: Mon May 26 23:15:38 2014 +0200
Committer: piotrz <pi...@gmail.com>
Committed: Mon May 26 23:15:38 2014 +0200
----------------------------------------------------------------------
automation_tests/src/AllTestsSuite.as | 3 +
automation_tests/src/AutomationTestClasses.as | 2 +-
.../src/UnitTest/Tests/AllAttributeTest.as | 691 +++++++++++--------
.../src/UnitTest/Tests/AllCharAttributeTest.as | 136 ++--
4 files changed, 435 insertions(+), 397 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/2b0067b7/automation_tests/src/AllTestsSuite.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/AllTestsSuite.as b/automation_tests/src/AllTestsSuite.as
index ab31501..2134fcd 100644
--- a/automation_tests/src/AllTestsSuite.as
+++ b/automation_tests/src/AllTestsSuite.as
@@ -20,6 +20,7 @@ package
{
import UnitTest.Tests.AccessibilityMethodsTest;
+ import UnitTest.Tests.AllCharAttributeTest;
import UnitTest.Tests.AllEventTest;
import UnitTest.Tests.AttributeTest;
import UnitTest.Tests.BoxTest;
@@ -40,6 +41,8 @@ package
public var floatTest:FloatTest;
public var operationTest:OperationTest;
public var scrollingTest:ScrollingTest;
+ public var allAttributeTest:AllCharAttributeTest;
+ // public var allParagraphTest:AllParaAttributeTest;
}
}
http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/2b0067b7/automation_tests/src/AutomationTestClasses.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/AutomationTestClasses.as b/automation_tests/src/AutomationTestClasses.as
index db74742..3079ccf 100644
--- a/automation_tests/src/AutomationTestClasses.as
+++ b/automation_tests/src/AutomationTestClasses.as
@@ -35,7 +35,7 @@ package
*/
import AllTestsSuite; AllTestsSuite;
import MinimalTestsSuite; MinimalTestsSuite;
- import UnitTest.Tests.AccessibilityMethodsTest; AccessibilityMethodsTest;
+ // import UnitTest.Tests.AccessibilityMethodsTest; AccessibilityMethodsTest;
/*import UnitTest.Tests.AllAttributeTest; AllAttributeTest;
import UnitTest.Tests.AllCharAttributeTest; AllCharAttributeTest;
import UnitTest.Tests.AllContAttributeTest; AllContAttributeTest;
http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/2b0067b7/automation_tests/src/UnitTest/Tests/AllAttributeTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/AllAttributeTest.as b/automation_tests/src/UnitTest/Tests/AllAttributeTest.as
index 44bca88..4402025 100644
--- a/automation_tests/src/UnitTest/Tests/AllAttributeTest.as
+++ b/automation_tests/src/UnitTest/Tests/AllAttributeTest.as
@@ -18,310 +18,397 @@
////////////////////////////////////////////////////////////////////////////////
package UnitTest.Tests
{
- import UnitTest.ExtendedClasses.TestDescriptor;
- import UnitTest.ExtendedClasses.TestSuiteExtended;
- import UnitTest.ExtendedClasses.VellumTestCase;
- import UnitTest.Fixtures.TestConfig;
-
- import flash.display.Sprite;
-
- import flashx.textLayout.debug.assert;
- import flashx.textLayout.formats.Category;
- import flashx.textLayout.formats.FormatValue;
- import flashx.textLayout.formats.TextLayoutFormat;
- import flashx.textLayout.property.*;
+ import UnitTest.ExtendedClasses.VellumTestCase;
+ import UnitTest.Fixtures.TestConfig;
+
+ import flash.display.Sprite;
+
+ import flashx.textLayout.elements.FlowLeafElement;
+ import flashx.textLayout.elements.TextFlow;
+ import flashx.textLayout.formats.Category;
+ import flashx.textLayout.formats.FormatValue;
+ import flashx.textLayout.formats.TextLayoutFormat;
+ import flashx.textLayout.property.*;
import org.flexunit.asserts.assertTrue;
/** Base class for All*AttributeTest */
- public class AllAttributeTest extends VellumTestCase
- {
- // test specific configuration
- protected var testProp:Property;
- protected var testValue:*;
- protected var expectedValue:*;
-
- public function AllAttributeTest(methodName:String, testID:String, testConfig:TestConfig, prop:Property, testValue:*, expectedValue:*)
- {
- super (methodName, testID, testConfig);
-
- // assert(testValue != null,"null?");
- testProp = prop;
- this.testValue = testValue;
- this.expectedValue = expectedValue;
-
- // Note: These must correspond to a Watson product area (case-sensitive)
- metaData.productArea = "Text Attributes";
- }
-
- /* ************************************************************** */
- /* Use Format description and Property classes to generate testcases for Format in description
- /* ************************************************************** */
-
- /** Build testcases for all properties in the description. Depending on the property type iterate over possible values and test. */
- static internal function testAllProperties(ts:TestSuiteExtended, testConfig:TestConfig, description:Object, category:String, testClass:Class, methodName:String):void
- {
- testAllNumberPropsFromMinToMax(ts, testConfig, description, category, testClass, methodName);
- testAllIntPropsFromMinToMax(ts, testConfig, description, category, testClass, methodName);
- testAllNumberOrPercentPropsFromMinToMax(ts, testConfig, description, category, testClass, methodName);
- testAllBooleanProps(ts, testConfig, description, category, testClass, methodName);
- testAllEnumProps(ts, testConfig, description, category, testClass, methodName);
- testAllSharedValues(ts, testConfig, description, category, testClass, methodName);
- }
-
- /**
- * This builds testcases for properties in description that are Number types. For each number property
- * testcases are built to set the value to the below the minimum value, step from the minimum value to the maximum value
- * and then above the maximum value.
- */
- static internal function testAllNumberPropsFromMinToMax(ts:TestSuiteExtended, testConfig:TestConfig, description:Object, category:String, testClass:Class, methodName:String):void
- {
- for each (var prop:Property in description)
- {
- var handler:NumberPropertyHandler = prop.findHandler(NumberPropertyHandler) as NumberPropertyHandler;
-
- if (handler && prop.category == category)
- {
- var minVal:Number = handler.minValue;
- var maxVal:Number = handler.maxValue;
- assertTrue(true, minVal < maxVal);
- var delta:Number = (maxVal-minVal)/10;
- var includeInMinimalTestSuite:Boolean;
-
- for (var value:Number = minVal-delta;;)
- {
- var expectedValue:* = value < minVal ? undefined : (value > maxVal ? undefined : value);
-
- // include in the minmalTest values below the range, min value, max value and values above the range
- includeInMinimalTestSuite = (value <= minVal || value >= maxVal)
-
- ts.addTestDescriptor( new TestDescriptor (testClass, methodName, testConfig, null, prop, value, expectedValue, includeInMinimalTestSuite) );
-
- if (value > maxVal)
- break;
- value += delta;
- }
- }
- }
- }
- /**
- * This builds testcases for properties in attributes in description that are Int types. For each number property
- * testcases are built to set the value to the below the minimum value, step from the minimum value to the maximum value
- * and then above the maximum value.
- */
- static internal function testAllIntPropsFromMinToMax(ts:TestSuiteExtended, testConfig:TestConfig, description:Object, category:String, testClass:Class, methodName:String):void
- {
- for each (var prop:Property in description)
- {
- if (prop.category == category)
- {
- var handler:IntPropertyHandler = prop.findHandler(IntPropertyHandler) as IntPropertyHandler;
- if (handler)
- {
- var minVal:int = handler.minValue;
- var maxVal:int = handler.maxValue;
- assertTrue(true, minVal < maxVal);
- var delta:int = (maxVal-minVal)/10;
- var includeInMinimalTestSuite:Boolean;
-
- for (var value:Number = minVal-delta;;)
- {
- var expectedValue:* = value < minVal ? undefined : (value > maxVal ? undefined : value);
-
- // include in the minmalTest values below the range, min value, max value and values above the range
- includeInMinimalTestSuite = (value <= minVal || value >= maxVal)
-
- ts.addTestDescriptor( new TestDescriptor (testClass, methodName, testConfig, null, prop, value, expectedValue, includeInMinimalTestSuite) );
-
- if (value > maxVal)
- break;
- value += delta;
- }
- }
- }
- }
- }
- /**
- * This builds testcases for properties in description that are NumberOrPercent types. For each number property
- * testcases are built to set the value to the below the minimum value, step from the minimum value to the maximum value
- * and then above the maximum value. This is done first using the min/max number values and then the min/max percent values.
- */
- static internal function testAllNumberOrPercentPropsFromMinToMax(ts:TestSuiteExtended, testConfig:TestConfig, description:Object, category:String, testClass:Class, methodName:String):void
- {
- for each (var prop:Property in description)
- {
- if (prop.category == category)
- {
- var numberHandler:NumberPropertyHandler = prop.findHandler(NumberPropertyHandler) as NumberPropertyHandler;
- var percentHandler:PercentPropertyHandler = prop.findHandler(PercentPropertyHandler) as PercentPropertyHandler;
- if (numberHandler && percentHandler)
- {
- var minVal:Number = numberHandler.minValue;
- var maxVal:Number = numberHandler.maxValue;
- assertTrue(true, minVal < maxVal);
- var delta:Number = (maxVal-minVal)/10;
- var includeInMinimalTestSuite:Boolean;
-
- for (var value:Number = minVal-delta;;)
- {
- var expectedValue:* = value < minVal ? undefined : (value > maxVal ? undefined : value);
-
- // include in the minmalTest values below the range, min value, max value and values above the range
- includeInMinimalTestSuite = (value <= minVal || value >= maxVal)
-
- ts.addTestDescriptor( new TestDescriptor (testClass, methodName, testConfig, null, prop, value, expectedValue, includeInMinimalTestSuite) );
-
- if (value > maxVal)
- break;
- value += delta;
- }
-
- // repeat with percent values
- minVal = percentHandler.minValue;
- maxVal = percentHandler.maxValue;
- assertTrue(true, minVal < maxVal);
- delta = (maxVal-minVal)/10;
-
- for (value = minVal-delta;;)
- {
- expectedValue = value < minVal ? undefined : (value > maxVal ? undefined : value.toString()+"%");
- ts.addTestDescriptor( new TestDescriptor (testClass, methodName, testConfig, null, prop, value.toString()+"%", expectedValue, true) );
-
- if (value > maxVal)
- break;
- value += delta;
- }
- }
- }
- }
- }
- /**
- * This builds testcases for properties in attributes in description that are Boolean types. A testcase is generated
- * for true and false for the value.
- */
- static internal function testAllBooleanProps(ts:TestSuiteExtended, testConfig:TestConfig, description:Object, category:String, testClass:Class, methodName:String):void
- {
- for each (var prop:Property in description)
- {
- if (prop.category == category && prop.findHandler(BooleanPropertyHandler) != null)
- {
- ts.addTestDescriptor( new TestDescriptor (testClass, methodName, testConfig, null, prop, true, true, true) );
- ts.addTestDescriptor( new TestDescriptor (testClass, methodName, testConfig, null, prop, false, false, true) );
- }
- }
- }
-
- /**
- * This builds testcases for properties in attributes in description that are Enumerated types types. A testcase is generated
- * for each possible enumerated value
- */
- static internal function testAllEnumProps(ts:TestSuiteExtended, testConfig:TestConfig, description:Object, category:String, testClass:Class, methodName:String):void
- {
- var range:Object;
- var value:Object;
-
- for each (var prop:Property in description)
- {
- // new code
- if (prop.category == category)
- {
- var handler:EnumPropertyHandler = prop.findHandler(EnumPropertyHandler) as EnumPropertyHandler;
- if (handler)
- {
- range = handler.range;
- for (value in range)
- {
- if ( value != FormatValue.INHERIT )
- ts.addTestDescriptor( new TestDescriptor (testClass, methodName, testConfig, null, prop, value, value, true) );
- }
- ts.addTestDescriptor( new TestDescriptor (testClass, methodName, testConfig, null, prop, "foo", undefined, true) );
- }
-
- }
- }
- }
- /**
- * This builds testcases for setting all properties in description to inherit, null, undefined and an object.
- */
- static internal function testAllSharedValues(ts:TestSuiteExtended, testConfig:TestConfig, description:Object, category:String, testClass:Class, methodName:String):void
- {
- for each (var prop:Property in description)
- {
- if (prop.category == category)
- {
- ts.addTestDescriptor( new TestDescriptor (testClass, methodName, testConfig, null, prop, FormatValue.INHERIT, FormatValue.INHERIT, true) );
- // try an object, null and undefined
- ts.addTestDescriptor( new TestDescriptor (testClass, methodName, testConfig, null, prop, new Sprite(), undefined, false) );
- ts.addTestDescriptor( new TestDescriptor (testClass, methodName, testConfig, null, prop, null, undefined, false) );
- ts.addTestDescriptor( new TestDescriptor (testClass, methodName, testConfig, null, prop, undefined, undefined, false) );
- ts.addTestDescriptor( new TestDescriptor (testClass,"clearFormatTest", testConfig, null, prop, undefined, undefined, false));
- }
- }
- }
-
- public function clearFormatTest():void
- {
- SelManager.selectAll();
-
- var applyFormat:TextLayoutFormat = new TextLayoutFormat();
- applyFormat[testProp.name] = testProp.defaultValue;
- var clearFormat:TextLayoutFormat = new TextLayoutFormat();
- clearFormat[testProp.name] = FormatValue.INHERIT;
-
- switch(testProp.category)
- {
- case Category.CHARACTER:
- SelManager.applyFormat(applyFormat,null,null);
- AllCharAttributeTest.validateCharacterPropertyOnEntireFlow(SelManager.textFlow,testProp,testProp.defaultValue);
- SelManager.clearFormat(clearFormat,null,null);
- AllCharAttributeTest.validateCharacterPropertyOnEntireFlow(SelManager.textFlow,testProp,undefined);
- break;
- case Category.PARAGRAPH:
- SelManager.applyFormat(null,applyFormat,null);
- AllParaAttributeTest.validateParagraphPropertyOnEntireFlow(SelManager.textFlow,testProp,testProp.defaultValue);
- SelManager.clearFormat(null,clearFormat,null);
- AllParaAttributeTest.validateParagraphPropertyOnEntireFlow(SelManager.textFlow,testProp,undefined);
- break;
- case Category.CONTAINER:
- SelManager.applyFormat(null,null,applyFormat);
- AllContAttributeTest.validateContainerPropertyOnEntireFlow(SelManager.textFlow,testProp,testProp.defaultValue);
- SelManager.clearFormat(null,null,clearFormat);
- AllContAttributeTest.validateContainerPropertyOnEntireFlow(SelManager.textFlow,testProp,undefined);
- break;
- }
- }
-
- private var errorHandlerCount:int = 0;
- public function errorHandler(p:Property,value:Object):void
- {
- errorHandlerCount++;
- }
-
- protected function assignmentHelper(target:Object):void
- {
- Property.errorHandler = errorHandler;
- errorHandlerCount = 0;
- try {
- target[testProp.name] = testValue;
- }
- catch (e:Error)
- {
- Property.errorHandler = Property.defaultErrorHandler;
- assertTrue("Unexpected error in AllAttributeTest.assignmentHelper", false);
- throw(e);
- }
- Property.errorHandler = Property.defaultErrorHandler;
-
- if (expectedValue == undefined && testValue != undefined)
- {
- // expect an error
- assertTrue("Error expected but no error in AllAttributeTest.assignmentHelper",errorHandlerCount == 1);
- }
- else
- {
- // no error
- assertTrue("Error not expected but error found in AllAttributeTest.assignmentHelper",errorHandlerCount == 0);
- }
- }
- }
+ public class AllAttributeTest extends VellumTestCase
+ {
+ // test specific configuration
+ protected var testProp:Property;
+ protected var testValue:*;
+ protected var expectedValue:*;
+ protected var description:Object;
+ protected var category:String;
+
+ public function AllAttributeTest(methodName:String, testID:String, testConfig:TestConfig, prop:Property, testValue:*, expectedValue:*)
+ {
+ super(methodName, testID, testConfig);
+
+ // assert(testValue != null,"null?");
+ testProp = prop;
+ this.testValue = testValue;
+ this.expectedValue = expectedValue;
+ metaData = {};
+ // Note: These must correspond to a Watson product area (case-sensitive)
+ metaData.productArea = "Text Attributes";
+ }
+
+ /**
+ * This builds testcases for properties in description that are Number types. For each number property
+ * testcases are built to set the value to the below the minimum value, step from the minimum value to the maximum value
+ * and then above the maximum value.
+ */
+ protected function testAllNumberPropsFromMinToMax(testConfig:TestConfig, description:Object, category:String):void
+ {
+ for each (testProp in description)
+ {
+ var handler:NumberPropertyHandler = testProp.findHandler(NumberPropertyHandler) as NumberPropertyHandler;
+
+ if (handler && testProp.category == category)
+ {
+ var minVal:Number = handler.minValue;
+ var maxVal:Number = handler.maxValue;
+ assertTrue(true, minVal < maxVal);
+ var delta:Number = (maxVal - minVal) / 10;
+ var includeInMinimalTestSuite:Boolean;
+
+ for (var value:Number = minVal - delta; ;)
+ {
+ expectedValue = value < minVal ? undefined : (value > maxVal ? undefined : value);
+ testValue = value;
+ // include in the minmalTest values below the range, min value, max value and values above the range
+ includeInMinimalTestSuite = (value <= minVal || value >= maxVal)
+
+ runOneCharacterAttributeTest();
+
+ if (value > maxVal)
+ break;
+ value += delta;
+ }
+ }
+ }
+ }
+
+ /**
+ * This builds testcases for properties in attributes in description that are Int types. For each number property
+ * testcases are built to set the value to the below the minimum value, step from the minimum value to the maximum value
+ * and then above the maximum value.
+ */
+ protected function testAllIntPropsFromMinToMax(testConfig:TestConfig, description:Object, category:String):void
+ {
+ for each (testProp in description)
+ {
+ if (testProp.category == category)
+ {
+ var handler:IntPropertyHandler = testProp.findHandler(IntPropertyHandler) as IntPropertyHandler;
+ if (handler)
+ {
+ var minVal:int = handler.minValue;
+ var maxVal:int = handler.maxValue;
+ assertTrue(true, minVal < maxVal);
+ var delta:int = (maxVal - minVal) / 10;
+ var includeInMinimalTestSuite:Boolean;
+
+ for (var value:Number = minVal - delta; ;)
+ {
+ expectedValue = value < minVal ? undefined : (value > maxVal ? undefined : value);
+ testValue = value;
+ // include in the minmalTest values below the range, min value, max value and values above the range
+ includeInMinimalTestSuite = (value <= minVal || value >= maxVal)
+
+ runOneCharacterAttributeTest();
+
+ if (value > maxVal)
+ break;
+ value += delta;
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * This builds testcases for properties in description that are NumberOrPercent types. For each number property
+ * testcases are built to set the value to the below the minimum value, step from the minimum value to the maximum value
+ * and then above the maximum value. This is done first using the min/max number values and then the min/max percent values.
+ */
+ protected function testAllNumberOrPercentPropsFromMinToMax(testConfig:TestConfig, description:Object, category:String):void
+ {
+ for each (testProp in description)
+ {
+ if (testProp.category == category)
+ {
+ var numberHandler:NumberPropertyHandler = testProp.findHandler(NumberPropertyHandler) as NumberPropertyHandler;
+ var percentHandler:PercentPropertyHandler = testProp.findHandler(PercentPropertyHandler) as PercentPropertyHandler;
+ if (numberHandler && percentHandler)
+ {
+ var minVal:Number = numberHandler.minValue;
+ var maxVal:Number = numberHandler.maxValue;
+ assertTrue(true, minVal < maxVal);
+ var delta:Number = (maxVal - minVal) / 10;
+ var includeInMinimalTestSuite:Boolean;
+
+ for (var value:Number = minVal - delta; ;)
+ {
+ expectedValue = value < minVal ? undefined : (value > maxVal ? undefined : value);
+ testValue = value;
+
+ // include in the minmalTest values below the range, min value, max value and values above the range
+ includeInMinimalTestSuite = (value <= minVal || value >= maxVal)
+
+ runOneCharacterAttributeTest();
+ //ts.addTestDescriptor( new TestDescriptor (testClass, methodName, testConfig, null, prop, value, expectedValue, includeInMinimalTestSuite) );
+
+ if (value > maxVal)
+ break;
+ value += delta;
+ }
+
+ // repeat with percent values
+ minVal = percentHandler.minValue;
+ maxVal = percentHandler.maxValue;
+ assertTrue(true, minVal < maxVal);
+ delta = (maxVal - minVal) / 10;
+
+ for (value = minVal - delta; ;)
+ {
+ expectedValue = value < minVal ? undefined : (value > maxVal ? undefined : value.toString() + "%");
+ //ts.addTestDescriptor( new TestDescriptor (testClass, methodName, testConfig, null, prop, value.toString()+"%", expectedValue, true) );
+
+ testValue = value.toString() + "%";
+
+ runOneCharacterAttributeTest();
+
+ if (value > maxVal)
+ break;
+ value += delta;
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * This builds testcases for properties in attributes in description that are Boolean types. A testcase is generated
+ * for true and false for the value.
+ */
+ protected function testAllBooleanProps(testConfig:TestConfig, description:Object, category:String):void
+ {
+ for each (testProp in description)
+ {
+ if (testProp.category == category && testProp.findHandler(BooleanPropertyHandler) != null)
+ {
+ expectedValue = testValue = true;
+ runOneCharacterAttributeTest();
+
+ expectedValue = testValue = false;
+ runOneCharacterAttributeTest();
+ }
+ }
+ }
+
+ /**
+ * This builds testcases for properties in attributes in description that are Enumerated types types. A testcase is generated
+ * for each possible enumerated value
+ */
+ protected function testAllEnumProps(testConfig:TestConfig, description:Object, category:String):void
+ {
+ var range:Object = null;
+ var value:Object = null;
+
+ for each (testProp in description)
+ {
+ // new code
+ if (testProp.category == category)
+ {
+ var handler:EnumPropertyHandler = testProp.findHandler(EnumPropertyHandler) as EnumPropertyHandler;
+ if (handler)
+ {
+ range = handler.range;
+ for (value in range)
+ {
+ if (value != FormatValue.INHERIT)
+ {
+ expectedValue = testValue = value;
+ runOneCharacterAttributeTest();
+ }
+ }
+ expectedValue = undefined;
+ testValue = "foo";
+ runOneCharacterAttributeTest();
+ }
+
+ }
+ }
+ }
+
+ /**
+ * This builds testcases for setting all properties in description to inherit, null, undefined and an object.
+ */
+ protected function testAllSharedValues(testConfig:TestConfig, description:Object, category:String):void
+ {
+ for each (testProp in description)
+ {
+ if (testProp.category == category)
+ {
+
+ testValue = expectedValue = FormatValue.INHERIT;
+ runOneCharacterAttributeTest();
+
+ testValue = new Sprite();
+ expectedValue = undefined;
+ runOneCharacterAttributeTest();
+
+ testValue = null;
+ expectedValue = undefined;
+ runOneCharacterAttributeTest();
+
+ testValue = expectedValue = undefined;
+ runOneCharacterAttributeTest();
+
+ testValue = expectedValue = undefined;
+ clearFormatTest();
+ }
+ }
+ }
+
+ public function clearFormatTest():void
+ {
+ SelManager.selectAll();
+
+ var applyFormat:TextLayoutFormat = new TextLayoutFormat();
+ applyFormat[testProp.name] = testProp.defaultValue;
+ var clearFormat:TextLayoutFormat = new TextLayoutFormat();
+ clearFormat[testProp.name] = FormatValue.INHERIT;
+
+ switch (testProp.category)
+ {
+ case Category.CHARACTER:
+ SelManager.applyFormat(applyFormat, null, null);
+ validateCharacterPropertyOnEntireFlow(SelManager.textFlow, testProp, testProp.defaultValue);
+ SelManager.clearFormat(clearFormat, null, null);
+ validateCharacterPropertyOnEntireFlow(SelManager.textFlow, testProp, undefined);
+ break;
+ case Category.PARAGRAPH:
+ SelManager.applyFormat(null, applyFormat, null);
+ // AllParaAttributeTest.validateParagraphPropertyOnEntireFlow(SelManager.textFlow, testProp, testProp.defaultValue);
+ SelManager.clearFormat(null, clearFormat, null);
+ // AllParaAttributeTest.validateParagraphPropertyOnEntireFlow(SelManager.textFlow, testProp, undefined);
+ break;
+ case Category.CONTAINER:
+ SelManager.applyFormat(null, null, applyFormat);
+ AllContAttributeTest.validateContainerPropertyOnEntireFlow(SelManager.textFlow, testProp, testProp.defaultValue);
+ SelManager.clearFormat(null, null, clearFormat);
+ AllContAttributeTest.validateContainerPropertyOnEntireFlow(SelManager.textFlow, testProp, undefined);
+ break;
+ }
+ }
+
+ private var errorHandlerCount:int = 0;
+
+ public function errorHandler(p:Property, value:Object):void
+ {
+ errorHandlerCount++;
+ }
+
+ protected function assignmentHelper(target:Object):void
+ {
+ Property.errorHandler = errorHandler;
+ errorHandlerCount = 0;
+ try
+ {
+ target[testProp.name] = testValue;
+ }
+ catch (e:Error)
+ {
+ Property.errorHandler = Property.defaultErrorHandler;
+ assertTrue("Unexpected error in AllAttributeTest.assignmentHelper", false);
+ throw(e);
+ }
+ Property.errorHandler = Property.defaultErrorHandler;
+
+ if (expectedValue == undefined && testValue != undefined)
+ {
+ // expect an error
+ assertTrue("Error expected but no error in AllAttributeTest.assignmentHelper", errorHandlerCount == 1);
+ }
+ else
+ {
+ // no error
+ assertTrue("Error not expected but error found in AllAttributeTest.assignmentHelper", errorHandlerCount == 0);
+ }
+ }
+
+
+ /**
+ * Generic function to run one character attribute test. Uses the selection manager to set the attributes on the entire flow at the span level
+ * to value and then validates that the value is expectedValue.
+ */
+ private function runOneCharacterAttributeTest():void
+ {
+ if (testProp == null)
+ return; // must be set
+
+ SelManager.selectAll();
+
+ // Test direct change on single leaf
+ var leaf:FlowLeafElement = SelManager.textFlow.findLeaf(SelManager.absoluteStart);
+ var originalValue:* = leaf[testProp.name];
+
+ assignmentHelper(leaf);
+
+ var expectedResult:*;
+ if (expectedValue === undefined)
+ expectedResult = testValue === undefined || testValue === null ? undefined : originalValue;
+ else
+ expectedResult = expectedValue;
+
+ assertTrue("FlowLeafElement does not have the expected value after direct change", leaf[testProp.name] == expectedResult);
+ leaf[testProp.name] = originalValue;
+
+ var ca:TextLayoutFormat = new TextLayoutFormat();
+ assignmentHelper(ca);
+ SelManager.applyLeafFormat(ca);
+
+ // expect that all FlowLeafElements have expectedValue as the properties value
+ if (expectedValue !== undefined)
+ assertTrue("not all FlowLeafElements have the expected value", validateCharacterPropertyOnEntireFlow(SelManager.textFlow, testProp, expectedValue));
+ }
+
+
+ // support function to walk all FlowLeafElements and verify that prop is val
+ private function validateCharacterPropertyOnEntireFlow(textFlow:TextFlow, prop:Property, val:*):Boolean
+ {
+ var idx:int = 0;
+ var elem:FlowLeafElement = textFlow.getFirstLeaf();
+ assertTrue("either the first FlowLeafElement is null or the textFlow length is zero", elem != null || textFlow.textLength == 0);
+ while (elem)
+ {
+ // error if elements have zero length
+ assertTrue("The FlowLeafElement has zero length", elem.textLength != 0);
+
+ // expect all values of prop to be supplied val
+ if (elem.format[prop.name] !== val || elem[prop.name] !== val)
+ return false;
+
+ // inherit is never computed
+ if ((val == FormatValue.INHERIT && elem.computedFormat[prop.name] == val) || elem.computedFormat[prop.name] === undefined)
+ return false;
+
+ // skip to the next element
+ var nextElem:FlowLeafElement = elem.getNextLeaf();
+ var absoluteEnd:int = elem.getAbsoluteStart() + elem.textLength;
+ if (nextElem == null)
+ assertTrue("absoluteEnd of the last FlowLeafElement is not the end of the textFlow", absoluteEnd == textFlow.textLength);
+ else
+ assertTrue("the end of this FlowLeafElement does not equal the start of the next", absoluteEnd == nextElem.getAbsoluteStart());
+
+ elem = nextElem;
+ }
+ return true;
+ }
+
+ }
}
http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/2b0067b7/automation_tests/src/UnitTest/Tests/AllCharAttributeTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/AllCharAttributeTest.as b/automation_tests/src/UnitTest/Tests/AllCharAttributeTest.as
index ff0596e..a9e1561 100644
--- a/automation_tests/src/UnitTest/Tests/AllCharAttributeTest.as
+++ b/automation_tests/src/UnitTest/Tests/AllCharAttributeTest.as
@@ -18,103 +18,51 @@
////////////////////////////////////////////////////////////////////////////////
package UnitTest.Tests
{
- import UnitTest.ExtendedClasses.TestSuiteExtended;
- import UnitTest.Fixtures.TestConfig;
+ import UnitTest.Fixtures.TestConfig;
- import flashx.textLayout.elements.FlowLeafElement;
- import flashx.textLayout.elements.TextFlow;
- import flashx.textLayout.formats.Category;
- import flashx.textLayout.formats.FormatValue;
- import flashx.textLayout.formats.TextLayoutFormat;
- import flashx.textLayout.property.Property;
- import flashx.textLayout.tlf_internal;
+ import flashx.textLayout.formats.Category;
+ import flashx.textLayout.formats.TextLayoutFormat;
- import org.flexunit.asserts.assertTrue;
+ import flashx.textLayout.tlf_internal;
use namespace tlf_internal;
- public class AllCharAttributeTest extends AllAttributeTest
- {
- public function AllCharAttributeTest(methodName:String, testID:String, testConfig:TestConfig, prop:Property, testValue:Object, expectedValue:*)
- {
- super (methodName, testID, testConfig, prop, testValue, expectedValue);
-
- // Note: These must correspond to a Watson product area (case-sensitive)
- metaData.productArea = "Text Attributes";
- metaData.productSubArea = "Character Attributes";
- }
-
- public static function suite(testConfig:TestConfig, ts:TestSuiteExtended):void
- {
- // generate test cases
- testAllProperties(ts, testConfig, TextLayoutFormat.description, Category.CHARACTER, AllCharAttributeTest, "runOneCharacterAttributeTest");
- }
-
- /**
- * Generic function to run one character attribute test. Uses the selection manager to set the attributes on the entire flow at the span level
- * to value and then validates that the value is expectedValue.
- */
- public function runOneCharacterAttributeTest():void
- {
- if (testProp == null)
- return; // must be set
-
- SelManager.selectAll();
-
- // Test direct change on single leaf
- var leaf:FlowLeafElement = SelManager.textFlow.findLeaf(SelManager.absoluteStart);
- var originalValue:* = leaf[testProp.name];
-
- assignmentHelper(leaf);
-
- var expectedResult:*;
- if (expectedValue === undefined)
- expectedResult = testValue === undefined || testValue === null ? undefined : originalValue;
- else
- expectedResult = expectedValue;
-
- assertTrue("FlowLeafElement does not have the expected value after direct change", leaf[testProp.name] == expectedResult);
- leaf[testProp.name] = originalValue;
-
- var ca:TextLayoutFormat = new TextLayoutFormat();
- assignmentHelper(ca);
- SelManager.applyLeafFormat(ca);
-
- // expect that all FlowLeafElements have expectedValue as the properties value
- if (expectedValue !== undefined)
- assertTrue("not all FlowLeafElements have the expected value", validateCharacterPropertyOnEntireFlow(SelManager.textFlow,testProp,expectedValue));
- }
-
- // support function to walk all FlowLeafElements and verify that prop is val
- static public function validateCharacterPropertyOnEntireFlow(textFlow:TextFlow, prop:Property,val:*):Boolean
- {
- var idx:int = 0;
- var elem:FlowLeafElement = textFlow.getFirstLeaf();
- assertTrue("either the first FlowLeafElement is null or the textFlow length is zero", elem != null || textFlow.textLength == 0);
- while (elem)
- {
- // error if elements have zero length
- assertTrue("The FlowLeafElement has zero length", elem.textLength != 0);
-
- // expect all values of prop to be supplied val
- if (elem.format[prop.name] !== val || elem[prop.name] !== val)
- return false;
-
- // inherit is never computed
- if ((val == FormatValue.INHERIT && elem.computedFormat[prop.name] == val) || elem.computedFormat[prop.name] === undefined)
- return false;
-
- // skip to the next element
- var nextElem:FlowLeafElement = elem.getNextLeaf();
- var absoluteEnd:int = elem.getAbsoluteStart() + elem.textLength;
- if (nextElem == null)
- assertTrue("absoluteEnd of the last FlowLeafElement is not the end of the textFlow", absoluteEnd == textFlow.textLength);
- else
- assertTrue("the end of this FlowLeafElement does not equal the start of the next", absoluteEnd == nextElem.getAbsoluteStart());
-
- elem = nextElem;
- }
- return true;
- }
- }
+ public class AllCharAttributeTest extends AllAttributeTest
+ {
+ public function AllCharAttributeTest()
+ {
+ super("", "AllCharAttributeTest", TestConfig.getInstance(), null, null, null);
+ // Note: These must correspond to a Watson product area (case-sensitive)
+ metaData.productArea = "Text Attributes";
+ metaData.productSubArea = "Character Attributes";
+ }
+
+
+ [Before]
+ override public function setUpTest():void
+ {
+ super.setUpTest();
+
+ testProp = null;
+ expectedValue = null;
+ testValue = null;
+ }
+
+ [After]
+ override public function tearDownTest():void
+ {
+ super.tearDownTest();
+ }
+
+ [Test]
+ public function propertiesCharacterTests():void
+ {
+ testAllNumberPropsFromMinToMax(TestConfig.getInstance(), TextLayoutFormat.description, Category.CHARACTER);
+ testAllIntPropsFromMinToMax(TestConfig.getInstance(), TextLayoutFormat.description, Category.CHARACTER);
+ testAllNumberOrPercentPropsFromMinToMax(TestConfig.getInstance(), TextLayoutFormat.description, Category.CHARACTER);
+ testAllBooleanProps(TestConfig.getInstance(), TextLayoutFormat.description, Category.CHARACTER);
+ testAllEnumProps(TestConfig.getInstance(), TextLayoutFormat.description, Category.CHARACTER);
+ testAllSharedValues(TestConfig.getInstance(), TextLayoutFormat.description, Category.CHARACTER);
+ }
+ }
}