public void ConvertAsciiToUnicode() { string encFileName = Path.Combine(Path.GetTempPath(), "test.map"); try { using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream( "SIL.FieldWorks.TE.EncTest.map")) { Assert.IsNotNull(stream); // Define an encoding converter using (StreamReader reader = new StreamReader(stream)) { using (StreamWriter writer = new StreamWriter(encFileName)) { writer.Write(reader.ReadToEnd()); } } } m_converters = new EncConverters(); m_converters.Add("MyConverter", encFileName, ConvType.Legacy_to_from_Unicode, string.Empty, string.Empty, ProcessTypeFlags.UnicodeEncodingConversion); Assert.NotNull(m_converters["MyConverter"], "MyConverter didn't get added"); string filename = m_fileOs.MakeSfFile(Encoding.GetEncoding(EncodingConstants.kMagicCodePage), false, "ROM", @"\mt 0123456789", "\\s \u0081\u009a\u0096\u00b5", @"\c 1", @"\v 1"); m_settings.AddFile(filename, ImportDomain.Main, null, null); // Set the vernacular WS to use the MyConverter encoder VernacularWs.LegacyMapping = "MyConverter"; ISCTextEnum textEnum = GetTextEnum(ImportDomain.Main, new ScrReference(45, 0, 0, ScrVers.English), new ScrReference(45, 1, 1, ScrVers.English)); ISCTextSegment textSeg = textEnum.Next(); Assert.IsNotNull(textSeg, "Unable to read segment"); Assert.AreEqual(@"\id", textSeg.Marker); Assert.AreEqual("ROM ", textSeg.Text); textSeg = textEnum.Next(); Assert.IsNotNull(textSeg, "Unable to read segment"); Assert.AreEqual(@"\mt", textSeg.Marker); Assert.AreEqual("\u0966\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f ", textSeg.Text); textSeg = textEnum.Next(); Assert.IsNotNull(textSeg, "Unable to read segment"); Assert.AreEqual(@"\s", textSeg.Marker); Assert.AreEqual("\u0492\u043a\u2013\u04e9 ", textSeg.Text); textSeg = textEnum.Next(); Assert.IsNotNull(textSeg, "Unable to read segment"); Assert.AreEqual(@"\c", textSeg.Marker); Assert.AreEqual(@" ", textSeg.Text); textSeg = textEnum.Next(); Assert.IsNotNull(textSeg, "Unable to read segment"); Assert.AreEqual(@"\v", textSeg.Marker); Assert.AreEqual(@" ", textSeg.Text); } finally { m_converters.Remove("MyConverter"); try { FileUtils.Delete(encFileName); } catch { } } }