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

            byte[] readbuf = new Byte[4];

            // 開いていないファイル番号をRead
            long ret = test.read(10, out readbuf, 4);

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

            byte[] readbuf = new Byte[4];

            // ファイル番号の範囲外をRead(最小)
            long ret = test.read(-1, out readbuf, 4);

            Assert.AreEqual(-1, ret); // 失敗すること
        }
Esempio n. 7
0
        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);
        }