toon-members
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Toon-members] TooN internal/slice_error.hh test/vec_test.cc


From: Edward Rosten
Subject: [Toon-members] TooN internal/slice_error.hh test/vec_test.cc
Date: Tue, 13 Jan 2009 13:31:32 +0000

CVSROOT:        /cvsroot/toon
Module name:    TooN
Changes by:     Edward Rosten <edrosten>        09/01/13 13:31:32

Modified files:
        internal       : slice_error.hh 
        test           : vec_test.cc 

Log message:
        More tests. Fix some slicing bugs.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/TooN/internal/slice_error.hh?cvsroot=toon&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/TooN/test/vec_test.cc?cvsroot=toon&r1=1.2&r2=1.3

Patches:
Index: internal/slice_error.hh
===================================================================
RCS file: /cvsroot/toon/TooN/internal/slice_error.hh,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- internal/slice_error.hh     13 Jan 2009 11:58:49 -0000      1.3
+++ internal/slice_error.hh     13 Jan 2009 13:31:32 -0000      1.4
@@ -13,7 +13,7 @@
        {
                static void check()
                {
-                       BadSlice<(Start < 0) || (Start+Length>=Size)>::check();
+                       BadSlice<(Start < 0) || (Start+Length>Size)>::check();
                }
        };      
 
@@ -24,7 +24,7 @@
                {
                        BadSlice<(Start != 2147483647 && Start < 0)>::check();
 
-                       if(start < 0 || start + length >= size)
+                       if(start < 0 || start + length > size)
                        {
                                #ifdef TOON_TEST_INTERNALS
                                        throw Internal::SliceError();

Index: test/vec_test.cc
===================================================================
RCS file: /cvsroot/toon/TooN/test/vec_test.cc,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- test/vec_test.cc    13 Jan 2009 12:25:07 -0000      1.2
+++ test/vec_test.cc    13 Jan 2009 13:31:32 -0000      1.3
@@ -18,6 +18,9 @@
        typedef class IgnoreMe{} type;
 };
 
+namespace TooN{namespace Internal{
+struct NoError{};
+}}
 
 #define TRY lineno = __LINE__; try{
 
@@ -28,10 +31,7 @@
 }\
 
 #define EXPECT(X) \
-       if(#X == string("NoError"))\
-               cerr << "Test OK on line " << lineno << " from " << func_lineno 
<< endl;\
-       else\
-               cerr << "Test FAILED on line " << lineno << " from " << 
func_lineno << ". Expected " << #X << ", got nothing." << endl;\
+       throw TooN::Internal::NoError();\
 }\
 catch(TooN::Internal::X e)\
 {\
@@ -42,31 +42,60 @@
 EXPECT_CATCH(X, StaticSliceError)\
 EXPECT_CATCH(X, SizeMismatch)\
 EXPECT_CATCH(X, StaticSizeMismatch)\
+EXPECT_CATCH(X, NoError)
 
-#define test_bad_static_slices(...) test_bad_static_slices_(__LINE__ , 
__VA_ARGS__)
-template<class C> void test_bad_static_slices_(int func_lineno, C v)
+#define test_static_static_slices(...) test_static_static_slices_(__LINE__ , 
__VA_ARGS__)
+template<class C> void test_static_static_slices_(int func_lineno, C v)
 {
        TRY{
-               Vector<2> v;
-               v.slice<0, 3>();
+               v.template slice<0, 3>();
        }
        EXPECT(StaticSliceError);
 
        TRY{
-               Vector<2> v;
-               v.slice<2, 2>();
+               v.template slice<2, 2>();
        }
        EXPECT(StaticSliceError);
 
        TRY{
-               Vector<2> v;
-               v.slice<-1, 1>();
+               v.template slice<-1, 1>();
+       }
+       EXPECT(StaticSliceError);
+
+       TRY{
+               v.template slice<0, 2>();
+       }
+       EXPECT(NoError)
+
+}
+
+#define test_static_dynamic_slices(...) test_static_dynamic_slices_(__LINE__ , 
__VA_ARGS__)
+template<class C> void test_static_dynamic_slices_(int func_lineno, C v)
+{
+       TRY{
+               v.template slice<0, 3>();
+       }
+       EXPECT(SliceError);
+
+       TRY{
+               v.template slice<2, 2>();
+       }
+       EXPECT(SliceError);
+
+       TRY{
+               v.template slice<-1, 1>();
        }
        EXPECT(StaticSliceError);
+
+       TRY{
+               v.template slice<0, 2>();
+       }
+       EXPECT(NoError);
+
 }
 
-#define test_bad_dynamic_slices(...) test_bad_dynamic_slices_(__LINE__, 
__VA_ARGS__)
-template<class C> void test_bad_dynamic_slices_(int func_lineno, C v)
+#define test_dynamic_slices(...) test_dynamic_slices_(__LINE__, __VA_ARGS__)
+template<class C> void test_dynamic_slices_(int func_lineno, C v)
 {
        TRY{
                v.slice(0,3);
@@ -82,26 +111,31 @@
                v.slice(-1,1);
        }
        EXPECT(SliceError);
+
+       TRY{
+               v.template slice(0, 2);
+       }
+       EXPECT(NoError);
 }
 
 
 int main()
 {
-       test_bad_static_slices(Vector<2>());
-       test_bad_dynamic_slices(Vector<2>());
+       test_static_static_slices(Vector<2>());
+       test_dynamic_slices(Vector<2>());
        
-       test_bad_static_slices(Vector<4>().slice<0,2>());
-       test_bad_dynamic_slices(Vector<4>().slice<0,2>());
+       test_static_static_slices(Vector<4>().slice<0,2>());
+       test_dynamic_slices(Vector<4>().slice<0,2>());
 
-       test_bad_static_slices(Vector<4>().slice(0,2));
-       test_bad_dynamic_slices(Vector<4>().slice(0,2));
+       test_static_dynamic_slices(Vector<4>().slice(0,2));
+       test_dynamic_slices(Vector<4>().slice(0,2));
        
-       test_bad_static_slices(Vector<>(2));
-       test_bad_dynamic_slices(Vector<>(2));
+       test_static_dynamic_slices(Vector<>(2));
+       test_dynamic_slices(Vector<>(2));
 
-       test_bad_static_slices(Vector<>(4).slice<0,2>());
-       test_bad_dynamic_slices(Vector<>(4).slice<0,2>());
+       test_static_static_slices(Vector<>(4).slice<0,2>());
+       test_dynamic_slices(Vector<>(4).slice<0,2>());
 
-       test_bad_static_slices(Vector<>(4).slice(0,2));
-       test_bad_dynamic_slices(Vector<>(4).slice(0,2));
+       test_static_dynamic_slices(Vector<>(4).slice(0,2));
+       test_dynamic_slices(Vector<>(4).slice(0,2));
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]