Migrated misc unit test to gtest framework
[libcds.git] / tests / test-hdr / misc / find_option.cpp
diff --git a/tests/test-hdr/misc/find_option.cpp b/tests/test-hdr/misc/find_option.cpp
deleted file mode 100644 (file)
index ad86faa..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
-    This file is a part of libcds - Concurrent Data Structures library
-
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
-
-    Source code repo: http://github.com/khizmax/libcds/
-    Download: http://sourceforge.net/projects/libcds/files/
-    
-    Redistribution and use in source and binary forms, with or without
-    modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice, this
-      list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-
-    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-    DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-    OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.     
-*/
-
-#include <type_traits>
-#include <cds/opt/options.h>
-
-// Value options
-namespace {
-
-    template <int Val>
-    struct int_opt {
-        static const int value = Val;
-    };
-
-    template <bool Val>
-    struct bool_opt {
-        static const bool value = Val;
-    };
-
-    enum user_enum {
-        val_zero, val_one, val_two, val_three, val_four, val_five
-    };
-
-    template <user_enum Val>
-    struct enum_opt {
-        static const user_enum value = Val;
-    };
-}
-
-// Declare necessary cds::opt::find_option specialization for user-provided enum type
-CDS_DECLARE_FIND_OPTION_INTEGRAL_SPECIALIZATION( user_enum )
-
-#if CDS_COMPILER == CDS_COMPILER_GCC && CDS_COMPILER_VERSION < 40500
-// GCC 4.4 does not support local struct declarations
-namespace {
-    struct tag_default;
-    struct tag_a;
-    struct tag_b;
-}
-#endif
-
-void find_option_compiler_test()
-{
-
-    // *************************************************
-    // Type options
-    //
-#if !(CDS_COMPILER == CDS_COMPILER_GCC && CDS_COMPILER_VERSION < 40500)
-    // GCC 4.4 does not support local struct declarations
-    struct tag_default;
-    struct tag_a;
-    struct tag_b;
-#endif
-
-    // Option not found
-    static_assert( (std::is_same<
-        cds::opt::find_option< cds::opt::tag<tag_default>, cds::opt::stat<tag_a>, bool_opt<false> >::type,
-        cds::opt::tag<tag_default>
-    >::value), "Result != tag_default" );
-
-    // Option found once
-    static_assert( (std::is_same<
-        cds::opt::find_option< cds::opt::tag<tag_default>, cds::opt::tag<tag_a> >::type,
-        cds::opt::tag<tag_a>
-    >::value), "Result != tag_a" );
-
-    static_assert( (std::is_same<
-        cds::opt::find_option< cds::opt::tag<tag_default>, cds::opt::stat<tag_a>, cds::opt::tag<tag_a> >::type,
-        cds::opt::tag<tag_a>
-    >::value), "Result != tag_a" );
-
-    // First option
-    static_assert( (std::is_same<
-        cds::opt::find_option< cds::opt::tag<tag_default>
-        ,cds::opt::tag<tag_a>   // desired
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_a>
-        >::type,
-        cds::opt::tag<tag_a>
-    >::value), "Result != tag_a" );
-
-    // Last option
-    static_assert( (std::is_same<
-        cds::opt::find_option< cds::opt::tag<tag_default>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::tag<tag_a>   // desired
-        >::type,
-        cds::opt::tag<tag_a>
-    >::value), "Result != tag_a" );
-
-    // Middle option
-    static_assert( (std::is_same<
-        cds::opt::find_option< cds::opt::tag<tag_default>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::tag<tag_a>   // desired
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_a>
-        >::type,
-        cds::opt::tag<tag_a>
-    >::value), "Result != tag_a" );
-
-    // Option not found
-    static_assert( (std::is_same<
-        cds::opt::find_option< cds::opt::tag<tag_default>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_default>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_a>
-        >::type,
-        cds::opt::tag<tag_default>
-    >::value), "Result != tag_default" );
-
-    // Multiple options
-    static_assert( (std::is_same<
-        cds::opt::find_option< cds::opt::tag<tag_default>, cds::opt::tag<tag_a>, cds::opt::tag<tag_b> >::type,
-        cds::opt::tag<tag_a>
-    >::value), "Result != tag_a" );
-
-    static_assert( (std::is_same<
-        cds::opt::find_option< cds::opt::tag<tag_default>
-        ,cds::opt::tag<tag_a>   // desired - first accepted
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_b>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::stat<tag_a>
-        ,cds::opt::tag<tag_b>    // desired
-        >::type,
-        cds::opt::tag<tag_a>
-    >::value), "Result != tag_a" );
-
-
-
-    // *****************************************************
-    // Value options
-
-    // Not found
-    static_assert( (std::is_same<
-        cds::opt::find_option< int_opt<15>, bool_opt<false>, cds::opt::stat<tag_a> >::type,
-        int_opt<15>
-    >::value), "Result != int_opt<15>" );
-
-    static_assert( (std::is_same<
-        cds::opt::find_option< int_opt<15>, int_opt<100>, cds::opt::stat<tag_a> >::type,
-        int_opt<100>
-    >::value), "Result != int_opt<100>" );
-
-    static_assert( (std::is_same<
-        cds::opt::find_option< int_opt<15>, int_opt<100>, cds::opt::stat<tag_a>, bool_opt<true>, int_opt<200> >::type,
-        int_opt<100>
-    >::value), "Result != int_opt<100>" );
-
-    // User-provided enum type
-    static_assert( (std::is_same<
-        cds::opt::find_option< enum_opt<val_zero>, int_opt<100>, cds::opt::stat<tag_a>, int_opt<200> >::type,
-        enum_opt<val_zero>
-    >::value), "Result != enum_opt<val_zero>" );
-
-    static_assert( (std::is_same<
-        cds::opt::find_option< enum_opt<val_zero>, int_opt<100>, cds::opt::stat<tag_a>, enum_opt<val_three>, int_opt<200> >::type,
-        enum_opt<val_three>
-    >::value), "Result != enum_opt<val_three>" );
-
-}
-
-void test_extracting_option_value()
-{
-#if !(CDS_COMPILER == CDS_COMPILER_GCC && CDS_COMPILER_VERSION < 40500)
-    // GCC 4.4 does not support local struct declarations
-    struct tag_a;
-#endif
-    // Define option
-    typedef cds::opt::tag< tag_a >  tag_option;
-
-    // What is the value of the tag_option?
-    // How we can extract tag_a from tag_option?
-    // Here is a solution:
-    typedef cds::opt::value< tag_option >::tag  tag_option_value;
-
-    // tag_option_value is the same as tag_a
-    static_assert( (std::is_same< tag_option_value, tag_a >::value), "Error getting the value of option: tag_option_value != tag_a" );
-
-    // Value-option
-    typedef cds::opt::alignment< 16 >   align_option;
-    static_assert( cds::opt::value< align_option >::alignment == 16, "Error getting the value of option: option value != 16" );
-}