📄 textfieldparsertest.cs
字号:
t.SetFieldWidths (new int [] { 1, 3, 2 }); t.TextFieldType = FieldType.FixedWidth; Assert.AreEqual (";bcd;ef", Strings.Join (t.ReadFields (), ";"), "#21"); try { Assert.AreEqual ("1;234", Strings.Join (t.ReadFields (), ";"), "#22"); Assert.Fail ("#E23 - Expected 'MalformedLineException'"); } catch (MalformedLineException ex) { Assert.AreEqual ("Line 2 cannot be parsed using the current FieldWidths.", ex.Message, "#E21"); Assert.AreEqual (2, ex.LineNumber, "#E22"); } catch (Exception ex) { Helper.RemoveWarning (ex); Assert.Fail ("#E24 - Expected 'MalformedLineException'"); } Assert.AreEqual ("g;h k;lm", Strings.Join (t.ReadFields (), ";"), "#23"); } } [Test] public void SetFieldWidhtsTest () { using (StringReader reader = new StringReader ("abcd" + Constants.vbNewLine + "efgh" + Constants.vbNewLine)) using (TextFieldParser t = new TextFieldParser (reader)) { t.TextFieldType = FieldType.Delimited; t.SetFieldWidths (new int [] { 1, 3, 2 }); Assert.AreEqual ("1;3;2", Helper.Join (t.FieldWidths, ";"), "#01"); Assert.AreEqual (FieldType.Delimited, t.TextFieldType, "#02"); } } [Test] public void SetDelimitersTest () { using (StringReader reader = new StringReader ("abcd" + Constants.vbNewLine + "efgh" + Constants.vbNewLine)) using (TextFieldParser t = new TextFieldParser (reader)) { t.TextFieldType = FieldType.FixedWidth; t.SetDelimiters (";", ":"); Assert.AreEqual (";?:", Helper.Join (t.Delimiters, "?"), "#01"); Assert.AreEqual (FieldType.FixedWidth, t.TextFieldType, "#02"); } } [Test] public void PeekTest () { using (StringReader reader = new StringReader ("abcd" + Constants.vbNewLine + "efgh" + Constants.vbNewLine + "'comment" + Constants.vbNewLine + "after comment" + Constants.vbNewLine)) using (TextFieldParser t = new TextFieldParser (reader)) { Assert.AreEqual ("a", t.PeekChars (1), "#01"); Assert.AreEqual ("a", t.PeekChars (1), "#02"); Assert.AreEqual ("ab", t.PeekChars (2), "#03"); Assert.AreEqual ("abcd", t.PeekChars (10), "#04"); Assert.AreEqual ("abcd", t.ReadLine (), "#05"); Assert.AreEqual ("ef", t.PeekChars (2), "#06"); try { t.PeekChars (0); } catch (ArgumentException ex){ Helper.RemoveWarning (ex); } catch (Exception ex) { Helper.RemoveWarning (ex); Assert.Fail ("#07 - Expected 'ArgumentException'"); } try { t.PeekChars (-1); } catch (ArgumentException ex) { Helper.RemoveWarning (ex); } catch (Exception ex) { Helper.RemoveWarning (ex); Assert.Fail ("#08 - Expected 'ArgumentException'"); } Assert.AreEqual ("efgh", t.PeekChars (10), "#09"); Assert.AreEqual ("efgh", t.ReadLine (), "#10"); t.CommentTokens = new string [] {"'"}; Assert.AreEqual ("afte", t.PeekChars (4), "#11"); Assert.AreEqual ("'comment", t.ReadLine (), "#12"); Assert.AreEqual ("af", t.PeekChars (2), "#13"); Assert.AreEqual ("after comment", t.ReadLine (), "#14"); } } [Test] public void DefaultPropertiesTest () { using (StringReader reader = new StringReader (String.Empty)) using (TextFieldParser t = new TextFieldParser (reader)) { Assert.IsNotNull (t.CommentTokens, "#C1"); Assert.AreEqual (null, Strings.Join(t.CommentTokens, ";"), "#C2"); Assert.IsNull (t.Delimiters, "#D1"); Assert.IsTrue (t.EndOfData, "#E1"); Assert.AreEqual ("", t.ErrorLine, "#E2"); Assert.AreEqual (-1, t.ErrorLineNumber, "#E3"); Assert.IsNull (t.FieldWidths, "#F1"); Assert.AreEqual (true, t.HasFieldsEnclosedInQuotes, "#H1"); Assert.AreEqual (-1, t.LineNumber, "#L1"); Assert.AreEqual (FieldType.Delimited, t.TextFieldType, "#T1"); Assert.AreEqual (true, t.TrimWhiteSpace, "#T2"); } } [Test] public void CtorTest1 () { using (StringReader reader = new StringReader (String.Empty)) using (TextFieldParser t = new TextFieldParser (reader)) { Assert.AreEqual (string.Empty, t.ReadToEnd (), "#A1"); } using (StringReader reader = new StringReader ("abc")) using (TextFieldParser t = new TextFieldParser (reader)) { Assert.AreEqual ("abc", t.ReadToEnd (), "#A2"); } using (MemoryStream reader = new System.IO.MemoryStream (Encoding.ASCII.GetBytes("abc"))) using (TextFieldParser t = new TextFieldParser (reader, Encoding.ASCII)) { Assert.AreEqual ("abc", t.ReadToEnd (), "#A3"); } using (MemoryStream reader = new System.IO.MemoryStream (Encoding.ASCII.GetBytes ("abc"))) using (TextFieldParser t = new TextFieldParser (reader, Encoding.Unicode)) { Assert.IsTrue ("abc" != t.ReadToEnd (), "#A4"); } using (MemoryStream reader = new System.IO.MemoryStream (Encoding.ASCII.GetBytes ("abc"))) using (TextFieldParser t = new TextFieldParser (reader, Encoding.Unicode, true)) { Assert.IsTrue ("abc" != t.ReadToEnd (), "#A5"); } using (MemoryStream reader = new System.IO.MemoryStream (Encoding.Unicode.GetBytes ("abc"))) using (TextFieldParser t = new TextFieldParser (reader, Encoding.ASCII, true)) { Assert.IsTrue ("abc" != t.ReadToEnd (), "#A6"); } // Unicode string with bom using (MemoryStream reader = new System.IO.MemoryStream (new byte [] {0xFF, 0xFE, 0x61, 0, 0x62, 0, 0x63, 0})) using (TextFieldParser t = new TextFieldParser (reader, Encoding.ASCII, true)) { Assert.AreEqual ("abc", t.ReadToEnd (), "#A7"); } // UTF8 string with bom using (MemoryStream reader = new System.IO.MemoryStream (new byte [] { 0xEF, 0xBB, 0xBF, 0x61, 0x62, 0x63 })) using (TextFieldParser t = new TextFieldParser (reader, Encoding.ASCII, true)) { Assert.AreEqual ("abc", t.ReadToEnd (), "#A8"); } try { using (StringReader reader = new StringReader ("abc")) { using (TextFieldParser t = new TextFieldParser (reader)) { Assert.AreEqual ("abc", t.ReadToEnd (), "#A9"); } reader.ReadToEnd (); } Assert.Fail ("Excepted 'ObjectDisposedException'"); } catch (ObjectDisposedException ex) { Helper.RemoveWarning (ex); } catch (Exception ex) { Helper.RemoveWarning (ex); Assert.Fail("Excepted 'ObjectDisposedException'"); } using (MemoryStream reader = new System.IO.MemoryStream (new byte [] { 0xEF, 0xBB, 0xBF, 0x61, 0x62, 0x63 })) { using (TextFieldParser t = new TextFieldParser (reader, Encoding.UTF8, true, true)) { Assert.AreEqual ("abc", t.ReadToEnd (), "#A10"); } reader.ReadByte (); } using (MemoryStream reader = new System.IO.MemoryStream (Encoding.UTF8.GetBytes ("abc"))) using (TextFieldParser t = new TextFieldParser (reader)) { Assert.AreEqual ("abc", t.ReadToEnd (), "#A11"); } string tmpfile; tmpfile = System.IO.Path.GetTempFileName (); try { Microsoft.VisualBasic.FileIO.FileSystem.WriteAllText (tmpfile, "abc", false); using (TextFieldParser t = new TextFieldParser (tmpfile)) { Assert.AreEqual ("abc", t.ReadToEnd (), "#B01"); } } finally { System.IO.File.Delete (tmpfile); } tmpfile = System.IO.Path.GetTempFileName (); try { Microsoft.VisualBasic.FileIO.FileSystem.WriteAllText (tmpfile, "abc", false); using (TextFieldParser t = new TextFieldParser (tmpfile, Encoding.ASCII)) { Assert.AreEqual ("abc", t.ReadToEnd (), "#B02"); } } finally { System.IO.File.Delete (tmpfile); } tmpfile = System.IO.Path.GetTempFileName (); try { Microsoft.VisualBasic.FileIO.FileSystem.WriteAllBytes (tmpfile, new byte [] {0xFF, 0xFE, 0x61, 0, 0x62, 0, 0x63, 0}, false); using (TextFieldParser t = new TextFieldParser (tmpfile, Encoding.Unicode)) { Assert.AreEqual ("abc", t.ReadToEnd (), "#B03"); } } finally { System.IO.File.Delete (tmpfile); } tmpfile = System.IO.Path.GetTempFileName (); try { Microsoft.VisualBasic.FileIO.FileSystem.WriteAllBytes (tmpfile, new byte [] { 0xFF, 0xFE, 0x61, 0, 0x62, 0, 0x63, 0 }, false); using (TextFieldParser t = new TextFieldParser (tmpfile, Encoding.UTF8, true)) { Assert.AreEqual ("abc", t.ReadToEnd (), "#B04"); } } finally { System.IO.File.Delete (tmpfile); } tmpfile = System.IO.Path.GetTempFileName (); try { Microsoft.VisualBasic.FileIO.FileSystem.WriteAllBytes (tmpfile, new byte [] { 0x61, 0x62, 0x63}, false); using (TextFieldParser t = new TextFieldParser (tmpfile, Encoding.UTF8, false)) { Assert.AreEqual ("abc", t.ReadToEnd (), "#B04"); } } finally { System.IO.File.Delete (tmpfile); } } }}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -