public void LseekOriginCurrent() { LowLevelIO test = new LowLevelIO(); // 検証用ファイルを準備 long fileno = test.open("test.csv", LowLevelIO.O_RDWR, 0x777); byte[] writebuf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes("ABCDEFG"); test.write(fileno, writebuf, writebuf.Length); test.close(fileno); fileno = test.open("test.csv", LowLevelIO.O_WRONLY, 0x777); // OriginをCurrentに設定(先頭+1byte) long ret = test.lseek(fileno, 1, 1); Assert.AreEqual(1, ret); // 1byteに設定されていること // 1byteから000に書き換え writebuf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes("000"); test.write(fileno, writebuf, writebuf.Length); test.close(fileno); // 読んで fileno = test.open("test.csv", LowLevelIO.O_RDWR, 0x777); byte[] readbuf = new Byte[10]; long count = test.read(fileno, out readbuf, readbuf.Length); Array.Resize(ref readbuf, (int)count); // 読み取れたサイズに配列を変更 test.close(fileno); // 追記されていること CollectionAssert.AreEqual(System.Text.Encoding.GetEncoding("UTF-8").GetBytes("A000EFG"), readbuf); }
public void LseekOriginBegin1() { LowLevelIO test = new LowLevelIO(); // 検証用ファイルを準備 long fileno = test.open("test.csv", LowLevelIO.O_RDWR, 0x777); byte[] writebuf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes("ABCDEFG"); test.write(fileno, writebuf, writebuf.Length); test.close(fileno); fileno = test.open("test.csv", LowLevelIO.O_WRONLY, 0x777); // OriginをBeginから1byteに設定 long ret = test.lseek(fileno, 1, 0); Assert.AreEqual(1, ret); // 1Byte目に設定されたこと // 1byte目以降を000に書き換え writebuf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes("000"); test.write(fileno, writebuf, writebuf.Length); test.close(fileno); // 読んで fileno = test.open("test.csv", LowLevelIO.O_RDWR, 0x777); byte[] readbuf = new Byte[7]; long count = test.read(fileno, out readbuf, 7); test.close(fileno); // 書き変わっていること CollectionAssert.AreEqual(System.Text.Encoding.GetEncoding("UTF-8").GetBytes("A000EFG"), readbuf); }
public void LseekOriginEnd() { LowLevelIO test = new LowLevelIO(); // 検証用ファイルを準備 long fileno = test.open("test.csv", LowLevelIO.O_RDWR, 0x777); byte[] writebuf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes("ABCDEFG"); test.write(fileno, writebuf, writebuf.Length); test.close(fileno); fileno = test.open("test.csv", LowLevelIO.O_WRONLY, 0x777); // OriginをEndに設定 long ret = test.lseek(fileno, 0, 2); Assert.AreEqual(writebuf.Length, ret); // 最後に設定されていること // 最後に000を追記 writebuf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes("000"); test.write(fileno, writebuf, writebuf.Length); test.close(fileno); // 読んで fileno = test.open("test.csv", LowLevelIO.O_RDWR, 0x777); byte[] readbuf = new Byte[10]; long count = test.read(fileno, out readbuf, readbuf.Length); test.close(fileno); // 追記されていること CollectionAssert.AreEqual(System.Text.Encoding.GetEncoding("UTF-8").GetBytes("ABCDEFG000"), readbuf); }
public void OpenTrancate() { LowLevelIO test = new LowLevelIO(); string actual1 = "ABCD"; string actual2 = "EFG"; byte[] actualbuf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(actual2); // 普通に書いて long fileno = test.open("test.csv", LowLevelIO.O_RDWR, 0x777); byte[] writebuf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(actual1); test.write(fileno, writebuf, writebuf.Length); test.close(fileno); // 初めから書き直す fileno = test.open("test.csv", LowLevelIO.O_WRONLY | LowLevelIO.O_TRUNC, 0x777); Assert.AreNotEqual(-1, fileno); writebuf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(actual2); test.write(fileno, writebuf, writebuf.Length); test.close(fileno); // 読んで fileno = test.open("test.csv", LowLevelIO.O_RDWR, 0x777); byte[] readbuf = new Byte[actual2.Length]; long count = test.read(fileno, out readbuf, actual2.Length); test.close(fileno); // 最後に書いた文字列のみであること CollectionAssert.AreEqual(actualbuf, readbuf); test.close(fileno); }
public void WriteBadFileno() { LowLevelIO test = new LowLevelIO(); byte[] Writebuf = new Byte[4]; // 開いていないファイル番号をWrite long ret = test.write(10, Writebuf, 4); Assert.AreEqual(-1, ret); // 失敗すること }
public void WriteMinFileno() { LowLevelIO test = new LowLevelIO(); byte[] Writebuf = new Byte[4]; // ファイル番号の範囲外をWrite(最小) long ret = test.write(-1, Writebuf, 4); Assert.AreEqual(-1, ret); // 失敗すること }
public void NormalWrite() { LowLevelIO test = new LowLevelIO(); long fileno = test.open("test.csv", LowLevelIO.O_RDWR, 0x777); byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes("TEST"); test.write(fileno, buf, 4); test.close(fileno); Assert.IsTrue(File.Exists(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + "\\Vset2\\LUA\\test.csv")); }
public void NormalRead() { LowLevelIO test = new LowLevelIO(); string actual = "TEST"; // 書いて long fileno = test.open("test.csv", LowLevelIO.O_RDWR, 0x777); byte[] writebuf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(actual); test.write(fileno, writebuf, 4); test.close(fileno); // 読んで fileno = test.open("test.csv", LowLevelIO.O_RDWR, 0x777); byte[] readbuf = new Byte[4]; long count = test.read(fileno, out readbuf, 4); test.close(fileno); // 正しいこと CollectionAssert.AreEqual(writebuf, readbuf); }