public TestEnvironment()
			{
				var writingSystemRepository = new TestLdmlInFolderWritingSystemRepository(_folder.Path);
				_testWritingSystemFactory = new TestWritingSystemFactory();
				MockSetupModel = new Mock<WritingSystemSetupModel>(writingSystemRepository);
				SetDefinitionsInStore(new WritingSystemDefinition[] { });
			}
		public void Validate_NonSelfReferencingImport_Valid()
		{
			var ws = new WritingSystemDefinition("en-US");
			ws.Collations.Add(new IcuRulesCollationDefinition("other") {IcuRules = "&B<t<<<T<s<<<S<e<<<E\r\n"});
			var wsFactory = new TestWritingSystemFactory();
			wsFactory.WritingSystems.Add(ws);
			var collation = new IcuRulesCollationDefinition("standard")
			{
				WritingSystemFactory = wsFactory,
				Imports = {new IcuCollationImport("en-US", "other")},
				IcuRules = "&C<k<<<K<x<<<X<i<<<I\r\n"
			};
			string message;
			Assert.That(collation.Validate(out message), Is.True);
			Assert.That(collation.CollationRules, Is.EqualTo("&B<t<<<T<s<<<S<e<<<E\r\n&C<k<<<K<x<<<X<i<<<I\r\n"));
		}
        public void Validate_NonSelfReferencingImport_Valid()
        {
            var ws = new WritingSystemDefinition("en-US");

            ws.Collations.Add(new IcuRulesCollationDefinition("other")
            {
                IcuRules = "&B<t<<<T<s<<<S<e<<<E\r\n"
            });
            var wsFactory = new TestWritingSystemFactory();

            wsFactory.WritingSystems.Add(ws);
            var collation = new IcuRulesCollationDefinition("standard")
            {
                WritingSystemFactory = wsFactory,
                Imports  = { new IcuCollationImport("en-US", "other") },
                IcuRules = "&C<k<<<K<x<<<X<i<<<I\r\n"
            };
            string message;

            Assert.That(collation.Validate(out message), Is.True);
            Assert.That(collation.CollationRules, Is.EqualTo("&B<t<<<T<s<<<S<e<<<E\r\n&C<k<<<K<x<<<X<i<<<I\r\n"));
        }
		public void Roundtrip_LdmlIcuCollationWithImports()
		{
			using (var environment = new TestEnvironment())
			{
				const string icuRules =
					"&B<t<<<T<s<<<S<e<<<E\n\t\t\t\t&C<k<<<K<x<<<X<i<<<I\n\t\t\t\t&D<q<<<Q<r<<<R\n\t\t\t\t&G<o<<<O\n\t\t\t\t&W<h<<<H";
				var cd = new IcuRulesCollationDefinition("standard")
				{
					Imports = {new IcuCollationImport("my", "standard")},
					CollationRules = icuRules,
					IsValid = true
				};

				var wsToLdml = new WritingSystemDefinition("aa", "Latn", "", "");
				wsToLdml.Collations.Add(cd);

				var wsFactory = new TestWritingSystemFactory {WritingSystems =
				{
					new WritingSystemDefinition("my")
					{
						Collations = {new IcuRulesCollationDefinition("standard") {IcuRules = icuRules, CollationRules = icuRules, IsValid = true}}
					}
				}};
				var ldmlAdaptor = new LdmlDataMapper(wsFactory);
				ldmlAdaptor.Write(environment.FilePath("test.ldml"), wsToLdml, null);
				XElement ldmlElem = XElement.Load(environment.FilePath("test.ldml"));
				XElement collationsElem = ldmlElem.Element("collations");
				XElement defaultCollationElem = collationsElem.Element("defaultCollation");
				XElement collationElem = collationsElem.Element("collation");
				XElement crElem = collationElem.Element("cr");
				XElement importElem = collationElem.Element("import");
				Assert.That((string) defaultCollationElem, Is.EqualTo("standard"));
				Assert.That((string) collationElem.Attribute("type"), Is.EqualTo("standard"));
				Assert.That(crElem, Is.Null);
				Assert.That((string) importElem.Attribute("source"), Is.EqualTo("my"));
				Assert.That((string) importElem.Attribute("type"), Is.EqualTo("standard"));

				var wsFromLdml = new WritingSystemDefinition();
				ldmlAdaptor.Read(environment.FilePath("test.ldml"), wsFromLdml);

				Assert.That(wsFromLdml.Collations.First().ValueEquals(cd));
				Assert.That(wsFromLdml.DefaultCollation.ValueEquals(cd));
			}
		}