66 * LICENSE file in the root directory of this source tree.
77 */
88
9+ #include < executorch/extension/data_loader/buffer_data_loader.h>
910#include < executorch/extension/data_loader/file_data_loader.h>
1011#include < executorch/extension/flat_tensor/flat_tensor_data_map.h>
1112#include < executorch/extension/flat_tensor/serialize/flat_tensor_generated.h>
1718#include < gtest/gtest.h>
1819
1920using namespace ::testing;
21+ using executorch::extension::BufferDataLoader;
22+ using executorch::extension::FileDataLoader;
2023using executorch::extension::FlatTensorDataMap;
2124using executorch::extension::FlatTensorHeader;
2225using executorch::runtime::DataLoader;
2326using executorch::runtime::Error;
2427using executorch::runtime::FreeableBuffer;
2528using executorch::runtime::Result;
2629using executorch::runtime::TensorLayout;
27- using torch::executor::util::FileDataLoader;
2830
2931class FlatTensorDataMapTest : public ::testing::Test {
3032 protected:
@@ -51,7 +53,7 @@ TEST_F(FlatTensorDataMapTest, LoadFlatTensorDataMap) {
5153 EXPECT_EQ (data_map.error (), Error::Ok);
5254}
5355
54- TEST_F (FlatTensorDataMapTest, FlatTensorDataMap_GetMetadata ) {
56+ TEST_F (FlatTensorDataMapTest, GetMetadata ) {
5557 Result<FlatTensorDataMap> data_map =
5658 FlatTensorDataMap::load (data_map_loader_.get ());
5759 EXPECT_EQ (data_map.error (), Error::Ok);
@@ -93,7 +95,7 @@ TEST_F(FlatTensorDataMapTest, FlatTensorDataMap_GetMetadata) {
9395 EXPECT_EQ (const_c_res.error (), Error::NotFound);
9496}
9597
96- TEST_F (FlatTensorDataMapTest, FlatTensorDataMap_GetData ) {
98+ TEST_F (FlatTensorDataMapTest, GetData ) {
9799 Result<FlatTensorDataMap> data_map =
98100 FlatTensorDataMap::load (data_map_loader_.get ());
99101 EXPECT_EQ (data_map.error (), Error::Ok);
@@ -114,7 +116,7 @@ TEST_F(FlatTensorDataMapTest, FlatTensorDataMap_GetData) {
114116 EXPECT_EQ (data_c_res.error (), Error::NotFound);
115117}
116118
117- TEST_F (FlatTensorDataMapTest, FlatTensorDataMap_Keys ) {
119+ TEST_F (FlatTensorDataMapTest, GetKeys ) {
118120 Result<FlatTensorDataMap> data_map =
119121 FlatTensorDataMap::load (data_map_loader_.get ());
120122 EXPECT_EQ (data_map.error (), Error::Ok);
@@ -138,7 +140,7 @@ TEST_F(FlatTensorDataMapTest, FlatTensorDataMap_Keys) {
138140 EXPECT_EQ (key2_res.error (), Error::InvalidArgument);
139141}
140142
141- TEST_F (FlatTensorDataMapTest, FlatTensorDataMap_LoadInto ) {
143+ TEST_F (FlatTensorDataMapTest, LoadInto ) {
142144 Result<FlatTensorDataMap> data_map =
143145 FlatTensorDataMap::load (data_map_loader_.get ());
144146 EXPECT_EQ (data_map.error (), Error::Ok);
@@ -160,3 +162,23 @@ TEST_F(FlatTensorDataMapTest, FlatTensorDataMap_LoadInto) {
160162 }
161163 free (data);
162164}
165+
166+ TEST_F (FlatTensorDataMapTest, LoadAndCheckSize) {
167+ Result<FlatTensorDataMap> data_map =
168+ FlatTensorDataMap::load (data_map_loader_.get ());
169+ EXPECT_EQ (data_map.error (), Error::Ok);
170+
171+ // Truncate the file.
172+ size_t trunc_size = data_map_loader_->size ().get () - 8 ;
173+ Result<FreeableBuffer> truncated_file = data_map_loader_->load (
174+ 0 ,
175+ trunc_size,
176+ DataLoader::SegmentInfo (DataLoader::SegmentInfo::Type::External));
177+ ASSERT_EQ (truncated_file.error (), Error::Ok);
178+
179+ BufferDataLoader truncated_loader =
180+ BufferDataLoader (truncated_file->data (), trunc_size);
181+ Result<FlatTensorDataMap> truncated_program =
182+ FlatTensorDataMap::load (&truncated_loader);
183+ ASSERT_EQ (truncated_program.error (), Error::InvalidExternalData);
184+ }
0 commit comments