@@ -122,24 +122,35 @@ TEST_F(TensorTest, randomTensorCreation) {
122122
123123TEMPLATE_WITH_TYPE_T
124124void parseTensorFromFile () {
125- size_t nR = 20 , nC = 40 , nM = 60 ;
126- auto r = DTensor<T>::createRandomTensor (nR, nC, nM, -1 , 1 );
127- std::string fName = " myTest.dtensor" ;
128- r.saveToFile (fName );
129- auto a = DTensor<T>::parseFromTextFile (fName );
130- EXPECT_EQ (nR, a.numRows ());
131- EXPECT_EQ (nC, a.numCols ());
132- EXPECT_EQ (nM, a.numMats ());
133- auto diff = a - r;
134- T err = diff.maxAbs ();
135- EXPECT_LT (err, 2 *std::numeric_limits<T>::epsilon ());
125+ size_t n_runs = 10 ;
126+ for (size_t i = 0 ; i < n_runs; i++) {
127+ size_t nR = 20 , nC = 40 , nM = 6 ;
128+ auto r = DTensor<T>::createRandomTensor (nR, nC, nM, -1 , 1 );
129+ std::string fName = " myTest.dtensor" ;
130+ r.saveToFile (fName );
131+ auto a = DTensor<T>::parseFromTextFile (fName );
132+ EXPECT_EQ (nR, a.numRows ());
133+ EXPECT_EQ (nC, a.numCols ());
134+ EXPECT_EQ (nM, a.numMats ());
135+ auto diff = a - r;
136+ T err = diff.maxAbs ();
137+ EXPECT_LT (err, 2 * std::numeric_limits<T>::epsilon ());
138+ }
136139}
137140
138141TEST_F (TensorTest, parseTensorFromFile) {
139142 parseTensorFromFile<float >();
140143 parseTensorFromFile<double >();
141144}
142145
146+ TEST_F (TensorTest, parseTensorUnsupportedDataType) {
147+ size_t nR = 20 , nC = 40 , nM = 60 ;
148+ auto r = DTensor<double >::createRandomTensor (nR, nC, nM, -1 , 1 );
149+ std::string fName = " myTest.dtensor" ;
150+ r.saveToFile (fName );
151+ EXPECT_THROW (DTensor<char >::parseFromTextFile (fName ), std::invalid_argument);
152+ }
153+
143154/* ---------------------------------------
144155 * Move constructor
145156 * --------------------------------------- */
0 commit comments