| //////////////////////////////////////////////////////////////////////////////// |
| // |
| // Licensed to the Apache Software Foundation (ASF) under one or more |
| // contributor license agreements. See the NOTICE file distributed with |
| // this work for additional information regarding copyright ownership. |
| // The ASF licenses this file to You under the Apache License, Version 2.0 |
| // (the "License"); you may not use this file except in compliance with |
| // the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| //////////////////////////////////////////////////////////////////////////////// |
| package UnitTest.Tests |
| { |
| import UnitTest.ExtendedClasses.TestSuiteExtended; |
| import UnitTest.ExtendedClasses.VellumTestCase; |
| import UnitTest.Fixtures.TestConfig; |
| |
| import flash.text.engine.JustificationStyle; |
| import flash.text.engine.TextBaseline; |
| |
| import flashx.textLayout.elements.FlowLeafElement; |
| import flashx.textLayout.elements.ParagraphElement; |
| import flashx.textLayout.elements.TextFlow; |
| import flashx.textLayout.formats.FormatValue; |
| import flashx.textLayout.formats.JustificationRule; |
| import flashx.textLayout.formats.LeadingModel; |
| import flashx.textLayout.formats.TextLayoutFormat; |
| import flashx.textLayout.tlf_internal; |
| |
| import org.flexunit.asserts.assertTrue; |
| |
| use namespace tlf_internal; |
| |
| public class LocaleTests extends VellumTestCase |
| { |
| public function LocaleTests(methodName:String, testID:String, testConfig:TestConfig, testCaseXML:XML=null) |
| { |
| super(methodName, testID, testConfig, testCaseXML); |
| metaData.productArea = "Text Attributes"; |
| } |
| |
| public static function suiteFromXML(testListXML:XML, testConfig:TestConfig, ts:TestSuiteExtended):void |
| { |
| var testCaseClass:Class = LocaleTests; |
| VellumTestCase.suiteFromXML(testCaseClass, testListXML, testConfig, ts); |
| } |
| |
| public function textFlowLocale():void //KJT test selection range and change event |
| { |
| SelManager.selectRange(0,0); |
| |
| var tf:TextFlow = SelManager.textFlow; |
| var ca:TextLayoutFormat = new TextLayoutFormat(); |
| ca["locale"] = "fr_FR"; |
| SelManager.applyFormatToElement(tf, ca); |
| |
| var leaf:FlowLeafElement = tf.getFirstLeaf(); |
| assertTrue("TextFlow locale set failed on the leaf",leaf.computedFormat.locale == tf.computedFormat.locale); |
| |
| var para:ParagraphElement = leaf.getParagraph(); |
| assertTrue("TextFlow locale set failed on the paragraph",para.computedFormat.locale == tf.computedFormat.locale); |
| } |
| |
| public function validateEnLocaleSettings():void |
| { |
| setupLocaleAndAutoValues("en_US"); |
| var tf:TextFlow = SelManager.textFlow; |
| var leaf:FlowLeafElement = tf.getFirstLeaf(); |
| var para:ParagraphElement = leaf.getParagraph(); |
| |
| assertTrue("LocaleTest en_US: The flow dominantBaseline should be roman but is " + para.getEffectiveDominantBaseline(), |
| para.getEffectiveDominantBaseline() == TextBaseline.ROMAN); |
| assertTrue("LocaleTest en_US: The flow justificationRule should be SPACE but is " + para..getEffectiveJustificationRule(), |
| para.getEffectiveJustificationRule() == JustificationRule.SPACE); |
| assertTrue("LocaleTest en_US: The flow justificationStyle should be PUSH_IN_KINSOKU but is " + para.getEffectiveJustificationStyle(), |
| para.getEffectiveJustificationStyle() == JustificationStyle.PUSH_IN_KINSOKU); |
| assertTrue("LocaleTest en_US: The flow leadingModel should be ROMAN_UP but is " + para.getEffectiveLeadingModel(), |
| para.getEffectiveLeadingModel() == LeadingModel.ROMAN_UP); |
| } |
| |
| public function validateZhLocaleSettings():void |
| { |
| setupLocaleAndAutoValues("zh_TW"); |
| var tf:TextFlow = SelManager.textFlow; |
| var leaf:FlowLeafElement = tf.getFirstLeaf(); |
| var para:ParagraphElement = leaf.getParagraph(); |
| |
| assertTrue("LocaleTest zh_TW: The flow dominantBaseline should be ideo center but is " + para.getEffectiveDominantBaseline(), |
| para.getEffectiveDominantBaseline() == TextBaseline.IDEOGRAPHIC_CENTER); |
| assertTrue("LocaleTest zh_TW: The flow justificationRule should be EAST_ASIAN but is " + para..getEffectiveJustificationRule(), |
| para.getEffectiveJustificationRule() == JustificationRule.EAST_ASIAN); |
| assertTrue("LocaleTest zh_TW: The flow justificationStyle should be PUSH_IN_KINSOKU but is " + para.getEffectiveJustificationStyle(), |
| para.getEffectiveJustificationStyle() == JustificationStyle.PUSH_IN_KINSOKU); |
| assertTrue("TLocaleTest zh_TW: he flow leadingModel should be IDEOGRAPHIC_TOP_DOWN but is " + para.getEffectiveLeadingModel(), |
| para.getEffectiveLeadingModel() == LeadingModel.IDEOGRAPHIC_TOP_DOWN); |
| } |
| |
| public function validateJaLocaleSettings():void |
| { |
| setupLocaleAndAutoValues("ja_JP"); |
| var tf:TextFlow = SelManager.textFlow; |
| var leaf:FlowLeafElement = tf.getFirstLeaf(); |
| var para:ParagraphElement = leaf.getParagraph(); |
| |
| assertTrue("LocaleTest ja_JP: The flow dominantBaseline should be ideo center but is " + para.getEffectiveDominantBaseline(), |
| para.getEffectiveDominantBaseline() == TextBaseline.IDEOGRAPHIC_CENTER); |
| assertTrue("LocaleTest ja_JP: The flow justificationRule should be EAST_ASIAN but is " + para..getEffectiveJustificationRule(), |
| para.getEffectiveJustificationRule() == JustificationRule.EAST_ASIAN); |
| assertTrue("LocaleTest ja_JP: The flow justificationStyle should be PUSH_IN_KINSOKU but is " + para.getEffectiveJustificationStyle(), |
| para.getEffectiveJustificationStyle() == JustificationStyle.PUSH_IN_KINSOKU); |
| assertTrue("TLocaleTest ja_JP: he flow leadingModel should be IDEOGRAPHIC_TOP_DOWN but is " + para.getEffectiveLeadingModel(), |
| para.getEffectiveLeadingModel() == LeadingModel.IDEOGRAPHIC_TOP_DOWN); |
| } |
| |
| public function validateDefaultLocaleSettings():void |
| { |
| setupLocaleAndAutoValues("es_MX"); |
| var tf:TextFlow = SelManager.textFlow; |
| var leaf:FlowLeafElement = tf.getFirstLeaf(); |
| var para:ParagraphElement = leaf.getParagraph(); |
| |
| assertTrue("LocaleTest es_MX (undefined locale): The flow dominantBaseline should be roman but is " + para.getEffectiveDominantBaseline(), |
| para.getEffectiveDominantBaseline() == TextBaseline.ROMAN); |
| assertTrue("LocaleTest es_MX (undefined locale): The flow justificationRule should be SPACE but is " + para..getEffectiveJustificationRule(), |
| para.getEffectiveJustificationRule() == JustificationRule.SPACE); |
| assertTrue("LocaleTest es_MX (undefined locale): The flow justificationStyle should be PUSH_IN_KINSOKU but is " + para.getEffectiveJustificationStyle(), |
| para.getEffectiveJustificationStyle() == JustificationStyle.PUSH_IN_KINSOKU); |
| assertTrue("LocaleTest es_MX (undefined locale): The flow leadingModel should be ROMAN_UP but is " + para.getEffectiveLeadingModel(), |
| para.getEffectiveLeadingModel() == LeadingModel.ROMAN_UP); |
| } |
| |
| public function overrideLocaleWithEastAsian():void |
| { |
| //first set the locale to a non-East Asian value |
| setupLocaleAndAutoValues("en_US"); |
| |
| var tf:TextFlow = SelManager.textFlow; |
| |
| //Now override the values and make sure that the locale is being ignored. |
| var leaf:FlowLeafElement = tf.getFirstLeaf(); |
| var para:ParagraphElement = leaf.getParagraph(); |
| |
| var ca:TextLayoutFormat = new TextLayoutFormat(); |
| ca["dominantBaseline"] = TextBaseline.IDEOGRAPHIC_CENTER; |
| ca["leadingModel"] = LeadingModel.IDEOGRAPHIC_TOP_DOWN; |
| ca["justificationRule"] = JustificationRule.EAST_ASIAN; |
| ca["justificationStyle"] = JustificationStyle.PUSH_IN_KINSOKU; |
| SelManager.applyFormatToElement(para, ca); |
| |
| assertTrue("overrideLocaleWithEastAsian ja_JP: The flow dominantBaseline should be ideo center but is " + para.getEffectiveDominantBaseline(), |
| para.getEffectiveDominantBaseline() == TextBaseline.IDEOGRAPHIC_CENTER); |
| assertTrue("overrideLocaleWithEastAsian ja_JP: The flow justificationRule should be EAST_ASIAN but is " + para..getEffectiveJustificationRule(), |
| para.getEffectiveJustificationRule() == JustificationRule.EAST_ASIAN); |
| assertTrue("overrideLocaleWithEastAsian ja_JP: The flow justificationStyle should be PUSH_IN_KINSOKU but is " + para.getEffectiveJustificationStyle(), |
| para.getEffectiveJustificationStyle() == JustificationStyle.PUSH_IN_KINSOKU); |
| assertTrue("overrideLocaleWithEastAsian ja_JP: he flow leadingModel should be IDEOGRAPHIC_TOP_DOWN but is " + para.getEffectiveLeadingModel(), |
| para.getEffectiveLeadingModel() == LeadingModel.IDEOGRAPHIC_TOP_DOWN); |
| } |
| |
| public function overrideLocaleWithEnOrDefault():void |
| { |
| //first set the locale to an East Asian value |
| setupLocaleAndAutoValues("ja_JP"); |
| |
| var tf:TextFlow = SelManager.textFlow; |
| |
| //Now override the values and make sure that the locale is being ignored. |
| var leaf:FlowLeafElement = tf.getFirstLeaf(); |
| var para:ParagraphElement = leaf.getParagraph(); |
| |
| var ca:TextLayoutFormat = new TextLayoutFormat(); |
| ca["dominantBaseline"] = TextBaseline.ROMAN; |
| ca["leadingModel"] = LeadingModel.ROMAN_UP; |
| ca["justificationRule"] = JustificationRule.SPACE; |
| ca["justificationStyle"] = JustificationStyle.PRIORITIZE_LEAST_ADJUSTMENT; |
| SelManager.applyFormatToElement(para, ca); |
| |
| assertTrue("overrideLocaleWithEnOrDefault en/default: The flow dominantBaseline should be roman but is " + para.getEffectiveDominantBaseline(), |
| para.getEffectiveDominantBaseline() == TextBaseline.ROMAN); |
| assertTrue("overrideLocaleWithEnOrDefault en/default: The flow justificationRule should be SPACE but is " + para..getEffectiveJustificationRule(), |
| para.getEffectiveJustificationRule() == JustificationRule.SPACE); |
| assertTrue("overrideLocaleWithEnOrDefault en/default: The flow justificationStyle should be PRIORITIZE_LEAST_ADJUSTMENT but is " + para.getEffectiveJustificationStyle(), |
| para.getEffectiveJustificationStyle() == JustificationStyle.PRIORITIZE_LEAST_ADJUSTMENT); |
| assertTrue("overrideLocaleWithEnOrDefault en/default: The flow leadingModel should be ROMAN_UP but is " + para.getEffectiveLeadingModel(), |
| para.getEffectiveLeadingModel() == LeadingModel.ROMAN_UP); |
| } |
| |
| protected function setupLocaleAndAutoValues(locale:String):void |
| { |
| var tf:TextFlow = SelManager.textFlow; |
| var ca:TextLayoutFormat = new TextLayoutFormat(); |
| ca["locale"] = locale; |
| if(tf.computedFormat.dominantBaseline != flashx.textLayout.formats.FormatValue.AUTO) |
| { |
| ca["dominantBaseline"] = flashx.textLayout.formats.FormatValue.AUTO; |
| } |
| |
| if(tf.computedFormat.justificationRule != flashx.textLayout.formats.FormatValue.AUTO) |
| { |
| ca["justificationRule"] = flashx.textLayout.formats.FormatValue.AUTO; |
| } |
| |
| if(tf.computedFormat.justificationStyle != flashx.textLayout.formats.FormatValue.AUTO) |
| { |
| ca["justificationStyle"] = flashx.textLayout.formats.FormatValue.AUTO |
| } |
| |
| if(tf.computedFormat.leadingModel != flashx.textLayout.formats.LeadingModel.AUTO) |
| { |
| ca["leadingModel"] = flashx.textLayout.formats.LeadingModel.AUTO; |
| } |
| SelManager.applyFormatToElement(tf, ca); |
| } |
| } |
| } |