private void DefineEncoding(StreamReader reader) { GEDCOMCharacterSet charSet = fTree.Header.CharacterSet; switch (charSet) { case GEDCOMCharacterSet.csUTF8: if (!SysUtils.IsUnicodeEncoding(reader.CurrentEncoding)) { SetEncoding(Encoding.UTF8); // file without BOM } else { fEncodingState = EncodingState.esUnchanged; } break; case GEDCOMCharacterSet.csUNICODE: if (!SysUtils.IsUnicodeEncoding(reader.CurrentEncoding)) { SetEncoding(Encoding.Unicode); // file without BOM } else { fEncodingState = EncodingState.esUnchanged; } break; case GEDCOMCharacterSet.csANSEL: SetEncoding(new AnselEncoding()); break; case GEDCOMCharacterSet.csASCII: var format = GetGEDCOMFormat(fTree); if (format == GEDCOMFormat.gf_Native) { // GEDKeeper native format (old) and ASCII charset SetEncoding(Encoding.GetEncoding(1251)); } else { var fmtProps = GEDCOMFormats[(int)format]; if (fmtProps.PredefCharset > -1) { SetEncoding(Encoding.GetEncoding(fmtProps.PredefCharset)); } else { string cpVers = fTree.Header.CharacterSetVersion; if (!string.IsNullOrEmpty(cpVers)) { int sourceCodepage = SysUtils.ParseInt(cpVers, DEF_CODEPAGE); SetEncoding(Encoding.GetEncoding(sourceCodepage)); } else { SetEncoding(Encoding.GetEncoding(DEF_CODEPAGE)); } } } break; } }
private void DefineEncoding(StreamReader reader) { var format = GetGEDCOMFormat(fTree); GEDCOMCharacterSet charSet = fTree.Header.CharacterSet; switch (charSet) { case GEDCOMCharacterSet.csUTF8: if (!SysUtils.IsUnicodeEncoding(reader.CurrentEncoding)) { SetEncoding(Encoding.UTF8); // file without BOM } else { fEncodingState = EncodingState.esUnchanged; } break; case GEDCOMCharacterSet.csUNICODE: if (!SysUtils.IsUnicodeEncoding(reader.CurrentEncoding)) { SetEncoding(Encoding.Unicode); // file without BOM } else { fEncodingState = EncodingState.esUnchanged; } break; case GEDCOMCharacterSet.csANSEL: if (format == GEDCOMFormat.gf_ALTREE) { // Agelong Tree 4.0 with ANSEL is actually characteristic // for the Russian-language data export SetEncoding(Encoding.GetEncoding(1251)); } else { SetEncoding(new AnselEncoding()); } break; case GEDCOMCharacterSet.csASCII: if (format == GEDCOMFormat.gf_Native) { // GEDKeeper native format (old) and ASCII charset SetEncoding(Encoding.GetEncoding(1251)); } else { var fmtProps = GEDCOMFormats[(int)format]; if (fmtProps.PredefCharset > -1) { SetEncoding(Encoding.GetEncoding(fmtProps.PredefCharset)); } else { string cpVers = fTree.Header.CharacterSetVersion; if (!string.IsNullOrEmpty(cpVers)) { int sourceCodepage = ConvertHelper.ParseInt(cpVers, DEF_CODEPAGE); SetEncoding(Encoding.GetEncoding(sourceCodepage)); } else { if (fTree.Header.Language.Value == GEDCOMLanguageID.Russian) { SetEncoding(Encoding.GetEncoding(1251)); } else { SetEncoding(Encoding.GetEncoding(DEF_CODEPAGE)); } } } } break; } }
public void SysUtils_Tests() { #if __MonoCS__ Assert.IsTrue(SysUtils.IsUnix()); Assert.AreEqual(PlatformID.Unix, SysUtils.GetPlatformID()); Assert.IsFalse(string.IsNullOrEmpty(SysUtils.GetMonoVersion())); Assert.AreNotEqual(DesktopType.Windows, SysUtils.GetDesktopType()); #else Assert.IsFalse(SysUtils.IsUnix()); Assert.AreEqual(PlatformID.Win32NT, SysUtils.GetPlatformID()); Assert.IsTrue(string.IsNullOrEmpty(SysUtils.GetMonoVersion())); Assert.AreEqual(DesktopType.Windows, SysUtils.GetDesktopType()); #endif // Assert.IsTrue(SysUtils.IsUnicodeEncoding(Encoding.UTF8)); Assert.IsFalse(SysUtils.IsUnicodeEncoding(Encoding.ASCII)); // int days = SysUtils.DaysBetween(new DateTime(1990, 10, 10), new DateTime(1990, 10, 13)); Assert.AreEqual(3, days); days = SysUtils.DaysBetween(new DateTime(1990, 10, 10), new DateTime(1990, 10, 02)); Assert.AreEqual(-8, days); Assert.AreEqual(31, SysUtils.DaysInAMonth(1990, 5)); // Assert.AreEqual(true, SysUtils.IsSetBit(3, 0)); Assert.AreEqual(true, SysUtils.IsSetBit(3, 1)); Assert.AreEqual(false, SysUtils.IsSetBit(3, 4)); // Assert.AreEqual(495, SysUtils.Trunc(495.575)); Assert.AreEqual(3.0f, SysUtils.SafeDiv(9.0f, 3.0f)); Assert.AreEqual(0.0f, SysUtils.SafeDiv(9.0f, 0.0f)); // Assert.Throws(typeof(ArgumentNullException), () => { SysUtils.FirstOrDefault <int>(null); }); int N = SysUtils.FirstOrDefault(new int[] { 5, 7, 10 }); Assert.AreEqual(5, N); Assert.Throws(typeof(ArgumentNullException), () => { SysUtils.LastOrDefault <int>(null); }); N = SysUtils.LastOrDefault(new int[] { 5, 7, 10 }); Assert.AreEqual(10, N); // other string st = "ivan"; st = SysUtils.NormalizeName(st); Assert.AreEqual("Ivan", st); st = SysUtils.NormalizeName(null); Assert.AreEqual("", st); // Assert.AreEqual("", SysUtils.GetFileExtension("testfile")); Assert.AreEqual(".ext", SysUtils.GetFileExtension("testfile.eXt")); Assert.IsFalse(SysUtils.IsRemovableDrive(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData))); Assembly asm = this.GetType().Assembly; var attr1 = SysUtils.GetAssemblyAttribute <AssemblyTitleAttribute>(asm); Assert.IsNotNull(attr1); Assert.AreEqual("GKTests", attr1.Title); Assert.Throws(typeof(ArgumentNullException), () => { SysUtils.GetAssemblyAttribute <AssemblyTitleAttribute>(null); }); }