6
6
* LICENSE file in the root directory of this source tree.
7
7
*/
8
8
9
+ #include < executorch/extension/data_loader/buffer_data_loader.h>
9
10
#include < executorch/extension/data_loader/file_data_loader.h>
10
11
#include < executorch/extension/flat_tensor/flat_tensor_data_map.h>
11
12
#include < executorch/extension/flat_tensor/serialize/flat_tensor_generated.h>
17
18
#include < gtest/gtest.h>
18
19
19
20
using namespace ::testing;
21
+ using executorch::extension::BufferDataLoader;
22
+ using executorch::extension::FileDataLoader;
20
23
using executorch::extension::FlatTensorDataMap;
21
24
using executorch::extension::FlatTensorHeader;
22
25
using executorch::runtime::DataLoader;
23
26
using executorch::runtime::Error;
24
27
using executorch::runtime::FreeableBuffer;
25
28
using executorch::runtime::Result;
26
29
using executorch::runtime::TensorLayout;
27
- using torch::executor::util::FileDataLoader;
28
30
29
31
class FlatTensorDataMapTest : public ::testing::Test {
30
32
protected:
@@ -51,7 +53,7 @@ TEST_F(FlatTensorDataMapTest, LoadFlatTensorDataMap) {
51
53
EXPECT_EQ (data_map.error (), Error::Ok);
52
54
}
53
55
54
- TEST_F (FlatTensorDataMapTest, FlatTensorDataMap_GetMetadata ) {
56
+ TEST_F (FlatTensorDataMapTest, GetMetadata ) {
55
57
Result<FlatTensorDataMap> data_map =
56
58
FlatTensorDataMap::load (data_map_loader_.get ());
57
59
EXPECT_EQ (data_map.error (), Error::Ok);
@@ -93,7 +95,7 @@ TEST_F(FlatTensorDataMapTest, FlatTensorDataMap_GetMetadata) {
93
95
EXPECT_EQ (const_c_res.error (), Error::NotFound);
94
96
}
95
97
96
- TEST_F (FlatTensorDataMapTest, FlatTensorDataMap_GetData ) {
98
+ TEST_F (FlatTensorDataMapTest, GetData ) {
97
99
Result<FlatTensorDataMap> data_map =
98
100
FlatTensorDataMap::load (data_map_loader_.get ());
99
101
EXPECT_EQ (data_map.error (), Error::Ok);
@@ -114,7 +116,7 @@ TEST_F(FlatTensorDataMapTest, FlatTensorDataMap_GetData) {
114
116
EXPECT_EQ (data_c_res.error (), Error::NotFound);
115
117
}
116
118
117
- TEST_F (FlatTensorDataMapTest, FlatTensorDataMap_Keys ) {
119
+ TEST_F (FlatTensorDataMapTest, GetKeys ) {
118
120
Result<FlatTensorDataMap> data_map =
119
121
FlatTensorDataMap::load (data_map_loader_.get ());
120
122
EXPECT_EQ (data_map.error (), Error::Ok);
@@ -138,7 +140,7 @@ TEST_F(FlatTensorDataMapTest, FlatTensorDataMap_Keys) {
138
140
EXPECT_EQ (key2_res.error (), Error::InvalidArgument);
139
141
}
140
142
141
- TEST_F (FlatTensorDataMapTest, FlatTensorDataMap_LoadInto ) {
143
+ TEST_F (FlatTensorDataMapTest, LoadInto ) {
142
144
Result<FlatTensorDataMap> data_map =
143
145
FlatTensorDataMap::load (data_map_loader_.get ());
144
146
EXPECT_EQ (data_map.error (), Error::Ok);
@@ -160,3 +162,23 @@ TEST_F(FlatTensorDataMapTest, FlatTensorDataMap_LoadInto) {
160
162
}
161
163
free (data);
162
164
}
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