Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        public void LseekBadFileno()
        {
            LowLevelIO test = new LowLevelIO();

            // 開いていないファイル番号をLseek
            long ret = test.lseek(10, 0, 0);

            Assert.AreEqual(-1, ret); // 失敗すること
        }
Esempio n. 6
0
        public void LseekMinFileno()
        {
            LowLevelIO test = new LowLevelIO();

            // ファイル番号の範囲外をLseek(最小)
            long ret = test.lseek(-1, 0, 0);

            Assert.AreEqual(-1, ret); // 失敗すること
        }
Esempio n. 7
0
        public void LseekMaxFileno()
        {
            LowLevelIO test = new LowLevelIO();

            // ファイル番号の範囲外をLseek(最大)
            long ret = test.lseek(MAX_FILENO, 0, 0);

            Assert.AreEqual(-1, ret); // 失敗すること
        }