inputbuffer_test.cc revision c8b59c046895fa5b6d79f73e0b5817330fcfbfc1
1c8b59c046895fa5b6d79f73e0b5817330fcfbfc1A. Unique TensorFlower/* Copyright 2015 The TensorFlow Authors. All Rights Reserved. 29c3043ff3bf31a6a81810b4ce9e87ef936f1f529Manjunath Kudlur 39c3043ff3bf31a6a81810b4ce9e87ef936f1f529Manjunath KudlurLicensed under the Apache License, Version 2.0 (the "License"); 49c3043ff3bf31a6a81810b4ce9e87ef936f1f529Manjunath Kudluryou may not use this file except in compliance with the License. 59c3043ff3bf31a6a81810b4ce9e87ef936f1f529Manjunath KudlurYou may obtain a copy of the License at 69c3043ff3bf31a6a81810b4ce9e87ef936f1f529Manjunath Kudlur 79c3043ff3bf31a6a81810b4ce9e87ef936f1f529Manjunath Kudlur http://www.apache.org/licenses/LICENSE-2.0 89c3043ff3bf31a6a81810b4ce9e87ef936f1f529Manjunath Kudlur 99c3043ff3bf31a6a81810b4ce9e87ef936f1f529Manjunath KudlurUnless required by applicable law or agreed to in writing, software 109c3043ff3bf31a6a81810b4ce9e87ef936f1f529Manjunath Kudlurdistributed under the License is distributed on an "AS IS" BASIS, 119c3043ff3bf31a6a81810b4ce9e87ef936f1f529Manjunath KudlurWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 129c3043ff3bf31a6a81810b4ce9e87ef936f1f529Manjunath KudlurSee the License for the specific language governing permissions and 139c3043ff3bf31a6a81810b4ce9e87ef936f1f529Manjunath Kudlurlimitations under the License. 149c3043ff3bf31a6a81810b4ce9e87ef936f1f529Manjunath Kudlur==============================================================================*/ 159c3043ff3bf31a6a81810b4ce9e87ef936f1f529Manjunath Kudlur 16f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur#include "tensorflow/core/lib/io/inputbuffer.h" 17f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 18b481783fe0e00a86f6feb20a8dcad5fc4fc936a4Josh Levenberg#include <vector> 193a7d603feaf6434ffd6d9fd27cac65c1ef565e07Josh Levenberg#include "tensorflow/core/platform/env.h" 20f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 2156313def004795f75ef8281a0294c958d28f1e06Vijay Vasudevan#include "tensorflow/core/lib/core/errors.h" 223a7d603feaf6434ffd6d9fd27cac65c1ef565e07Josh Levenberg#include "tensorflow/core/lib/core/status.h" 23f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur#include "tensorflow/core/lib/core/status_test_util.h" 2456313def004795f75ef8281a0294c958d28f1e06Vijay Vasudevan#include "tensorflow/core/lib/strings/strcat.h" 2556313def004795f75ef8281a0294c958d28f1e06Vijay Vasudevan#include "tensorflow/core/platform/logging.h" 26f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur#include "tensorflow/core/platform/test.h" 27f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 28f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlurnamespace tensorflow { 29f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 30f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlurstatic std::vector<int> BufferSizes() { 31f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur return {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 32f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 12, 13, 14, 15, 16, 17, 18, 19, 20, 65536}; 33f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur} 34f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 35f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath KudlurTEST(InputBuffer, ReadLine_Empty) { 36f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur Env* env = Env::Default(); 37f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur string fname = testing::TmpDir() + "/inputbuffer_test"; 38f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur WriteStringToFile(env, fname, ""); 39f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 40f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur for (auto buf_size : BufferSizes()) { 41f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur RandomAccessFile* file; 42f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(env->NewRandomAccessFile(fname, &file)); 43f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur string line; 44f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur io::InputBuffer in(file, buf_size); 45f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_TRUE(errors::IsOutOfRange(in.ReadLine(&line))); 46f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur } 47f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur} 48f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 49f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath KudlurTEST(InputBuffer, ReadLine1) { 50f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur Env* env = Env::Default(); 51f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur string fname = testing::TmpDir() + "/inputbuffer_test"; 52f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur WriteStringToFile(env, fname, "line one\nline two\nline three\n"); 53f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 54f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur for (auto buf_size : BufferSizes()) { 55f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur RandomAccessFile* file; 56f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(env->NewRandomAccessFile(fname, &file)); 57f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur string line; 58f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur io::InputBuffer in(file, buf_size); 59f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadLine(&line)); 60f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(line, "line one"); 61f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadLine(&line)); 62f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(line, "line two"); 63f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadLine(&line)); 64f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(line, "line three"); 65f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_TRUE(errors::IsOutOfRange(in.ReadLine(&line))); 66f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur // A second call should also return end of file 67f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_TRUE(errors::IsOutOfRange(in.ReadLine(&line))); 68f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur } 69f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur} 70f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 71f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath KudlurTEST(InputBuffer, ReadLine_NoTrailingNewLine) { 72f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur Env* env = Env::Default(); 73f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur string fname = testing::TmpDir() + "/inputbuffer_test"; 74f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur WriteStringToFile(env, fname, "line one\nline two\nline three"); 75f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 76f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur for (auto buf_size : BufferSizes()) { 77f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur RandomAccessFile* file; 78f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(env->NewRandomAccessFile(fname, &file)); 79f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur string line; 80f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur io::InputBuffer in(file, buf_size); 81f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadLine(&line)); 82f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(line, "line one"); 83f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadLine(&line)); 84f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(line, "line two"); 85f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadLine(&line)); 86f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(line, "line three"); 87f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_TRUE(errors::IsOutOfRange(in.ReadLine(&line))); 88f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur // A second call should also return end of file 89f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_TRUE(errors::IsOutOfRange(in.ReadLine(&line))); 90f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur } 91f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur} 92f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 93f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath KudlurTEST(InputBuffer, ReadLine_EmptyLines) { 94f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur Env* env = Env::Default(); 95f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur string fname = testing::TmpDir() + "/inputbuffer_test"; 96f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur WriteStringToFile(env, fname, "line one\n\n\nline two\nline three"); 97f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 98f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur for (auto buf_size : BufferSizes()) { 99f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur RandomAccessFile* file; 100f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(env->NewRandomAccessFile(fname, &file)); 101f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur string line; 102f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur io::InputBuffer in(file, buf_size); 103f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadLine(&line)); 104f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(line, "line one"); 105f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadLine(&line)); 106f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(line, ""); 107f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadLine(&line)); 108f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(line, ""); 109f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadLine(&line)); 110f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(line, "line two"); 111f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadLine(&line)); 112f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(line, "line three"); 113f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_TRUE(errors::IsOutOfRange(in.ReadLine(&line))); 114f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur // A second call should also return end of file 115f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_TRUE(errors::IsOutOfRange(in.ReadLine(&line))); 116f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur } 117f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur} 118f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 1191c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlowerTEST(InputBuffer, ReadLine_CRLF) { 1201c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower Env* env = Env::Default(); 1211c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower string fname = testing::TmpDir() + "/inputbuffer_test"; 1221c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower WriteStringToFile(env, fname, "line one\r\n\r\n\r\nline two\r\nline three"); 1231c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower 1241c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower for (auto buf_size : BufferSizes()) { 1251c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower RandomAccessFile* file; 1261c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower TF_CHECK_OK(env->NewRandomAccessFile(fname, &file)); 1271c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower string line; 1281c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower io::InputBuffer in(file, buf_size); 1291c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower TF_CHECK_OK(in.ReadLine(&line)); 1301c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower EXPECT_EQ(line, "line one"); 1311c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower TF_CHECK_OK(in.ReadLine(&line)); 1321c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower EXPECT_EQ(line, ""); 1331c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower TF_CHECK_OK(in.ReadLine(&line)); 1341c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower EXPECT_EQ(line, ""); 1351c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower TF_CHECK_OK(in.ReadLine(&line)); 1361c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower EXPECT_EQ(line, "line two"); 1371c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower TF_CHECK_OK(in.ReadLine(&line)); 1381c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower EXPECT_EQ(line, "line three"); 1391c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower EXPECT_TRUE(errors::IsOutOfRange(in.ReadLine(&line))); 1401c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower // A second call should also return end of file 1411c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower EXPECT_TRUE(errors::IsOutOfRange(in.ReadLine(&line))); 1421c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower } 1431c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower} 1441c579361cd1e088dd5e05a394b1561a73e3667baA. Unique TensorFlower 145f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath KudlurTEST(InputBuffer, ReadNBytes) { 146f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur Env* env = Env::Default(); 147f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur string fname = testing::TmpDir() + "/inputbuffer_test"; 148f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur WriteStringToFile(env, fname, "0123456789"); 149f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 150f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur for (auto buf_size : BufferSizes()) { 151f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur RandomAccessFile* file; 152f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(env->NewRandomAccessFile(fname, &file)); 153f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur string read; 154f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur io::InputBuffer in(file, buf_size); 155f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(0, in.Tell()); 156f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadNBytes(3, &read)); 157f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(read, "012"); 158f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(3, in.Tell()); 159f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadNBytes(0, &read)); 160f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(read, ""); 161f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(3, in.Tell()); 162f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadNBytes(4, &read)); 163f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(read, "3456"); 164f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(7, in.Tell()); 165f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadNBytes(0, &read)); 166f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(read, ""); 167f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(7, in.Tell()); 168f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_TRUE(errors::IsOutOfRange(in.ReadNBytes(5, &read))); 169f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(read, "789"); 170f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(10, in.Tell()); 171f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_TRUE(errors::IsOutOfRange(in.ReadNBytes(5, &read))); 172f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(read, ""); 173f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(10, in.Tell()); 174f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadNBytes(0, &read)); 175f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(read, ""); 176f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(10, in.Tell()); 177f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur } 178f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur} 179f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 180f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath KudlurTEST(InputBuffer, SkipNBytes) { 181f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur Env* env = Env::Default(); 182f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur string fname = testing::TmpDir() + "/inputbuffer_test"; 183f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur WriteStringToFile(env, fname, "0123456789"); 184f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 185f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur for (auto buf_size : BufferSizes()) { 186f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur RandomAccessFile* file; 187f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(env->NewRandomAccessFile(fname, &file)); 188f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur string read; 189f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur io::InputBuffer in(file, buf_size); 190f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(0, in.Tell()); 191f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.SkipNBytes(3)); 192f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(3, in.Tell()); 193f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.SkipNBytes(0)); 194f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(3, in.Tell()); 195f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadNBytes(2, &read)); 196f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(read, "34"); 197f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(5, in.Tell()); 198f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.SkipNBytes(0)); 199f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(5, in.Tell()); 200f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.SkipNBytes(2)); 201f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(7, in.Tell()); 202f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur TF_CHECK_OK(in.ReadNBytes(1, &read)); 203f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(read, "7"); 204f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(8, in.Tell()); 205f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_TRUE(errors::IsOutOfRange(in.SkipNBytes(5))); 206f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(10, in.Tell()); 207f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_TRUE(errors::IsOutOfRange(in.SkipNBytes(5))); 208f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(10, in.Tell()); 209f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_TRUE(errors::IsOutOfRange(in.ReadNBytes(5, &read))); 210f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(read, ""); 211f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur EXPECT_EQ(10, in.Tell()); 212f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur } 213f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur} 214f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur 215f41959ccb2d9d4c722fe8fc3351401d53bcf490Manjunath Kudlur} // namespace tensorflow 216