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 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 LseekBadOrigin() { LowLevelIO test = new LowLevelIO(); // 一つ開いて long fileno = test.open("test0.csv", LowLevelIO.O_RDWR, 0x777); // Originをエラーにする long ret = test.lseek(fileno, 0, -1); Assert.AreEqual(-1, ret); // 失敗すること // Originをエラーにする ret = test.lseek(fileno, 0, 3); Assert.AreEqual(-1, ret); // 失敗すること test.close(fileno); }
public void LseekBadFileno() { LowLevelIO test = new LowLevelIO(); // 開いていないファイル番号をLseek long ret = test.lseek(10, 0, 0); Assert.AreEqual(-1, ret); // 失敗すること }
public void LseekMinFileno() { LowLevelIO test = new LowLevelIO(); // ファイル番号の範囲外をLseek(最小) long ret = test.lseek(-1, 0, 0); Assert.AreEqual(-1, ret); // 失敗すること }
public void LseekMaxFileno() { LowLevelIO test = new LowLevelIO(); // ファイル番号の範囲外をLseek(最大) long ret = test.lseek(MAX_FILENO, 0, 0); Assert.AreEqual(-1, ret); // 失敗すること }