Пример #1
0
BOOST_FIXTURE_TEST_CASE(compact_elias_fano_singleton,
                        sequence_initialization)
{
    // test singleton sequences
    std::vector<uint64_t> short_seq;
    short_seq.push_back(0);
    test_sequence(ds2i::compact_elias_fano(), params, 1, short_seq);
    short_seq[0] = 1;
    test_sequence(ds2i::compact_elias_fano(), params, 2, short_seq);
}
Пример #2
0
void test_sequence1 () {
    std::vector<int> v;
    for ( int i = 5; i < 15; ++i )
        v.push_back ( i );
    test_sequence  ( v );
    
    std::list<int> l;
    for ( int i = 25; i > 15; --i )
        l.push_back ( i );
    test_sequence  ( l );   
    }
Пример #3
0
void test_sequence1 () {
    std::vector<int> v;
    for ( int i = 5; i < 15; ++i )
        v.push_back ( i );
    test_sequence  ( v );
    
    BOOST_CXX14_CONSTEXPR bool constexpr_res = test_constexpr();
    BOOST_CHECK(constexpr_res);
    
    std::list<int> l;
    for ( int i = 25; i > 15; --i )
        l.push_back ( i );
    test_sequence  ( l );   
    }
Пример #4
0
void test_sequence_collection()
{
    ds2i::global_parameters params;
    uint64_t universe = 10000;
    typedef ds2i::sequence_collection<BaseSequence>
        collection_type;
    typename collection_type::builder b(params);

    std::vector<std::vector<uint64_t>> sequences(30);
    for (auto& seq: sequences) {
        double avg_gap = 1.1 + double(rand()) / RAND_MAX * 10;
        uint64_t n = uint64_t(universe / avg_gap);
        seq = random_sequence(universe, n, true);
        b.add_sequence(seq.begin(), seq.back() + 1, n);
    }

    {
        collection_type coll;
        b.build(coll);
        succinct::mapper::freeze(coll, "temp.bin");
    }

    {
        collection_type coll;
        boost::iostreams::mapped_file_source m("temp.bin");
        succinct::mapper::map(coll, m);

        for (size_t i = 0; i < sequences.size(); ++i) {
            test_sequence(coll[i], sequences[i]);
        }
    }
}
Пример #5
0
static size_t random_tests(size_t seed, size_t number, size_t maxsize)
{
    size_t fail = 0;
    srand(seed);
    printf("Seed: %zu\n", seed);

    for (size_t i = 0; i < number; i++)
    {
        Test t;
        t.size = rand() % maxsize;
        t.data = (Colour *)malloc(t.size * sizeof(*t.data));    /*=C++=*/
        if (t.data == 0)
        {
            fprintf(stderr, "Out of memory\n");
            exit(1);
        }
        if (verbose)
            printf("Test: %zu (%zu)\n", i, t.size);
        for (size_t j = 0; j < t.size; j++)
            t.data[j] = (Colour)(rand() % 3);
        if (test_sequence(t) == false)
        {
            fail++;
            break;
        }
    }
    return fail;
}
Пример #6
0
void test_partitioned_sequence(uint64_t universe,
                               std::vector<uint64_t> const& seq)
{
    ds2i::global_parameters params;
    typedef ds2i::partitioned_sequence<BaseSequence> sequence_type;

    succinct::bit_vector_builder bvb;
    sequence_type::write(bvb, seq.begin(), universe, seq.size(), params);
    succinct::bit_vector bv(&bvb);

    typename sequence_type::enumerator r(bv, 0, universe, seq.size(), params);
    ds2i::partitioned_sequence_test::test_construction(r, seq);
    test_sequence(r, seq);
}
Пример #7
0
int main()
{
    typedef fusion::vector<> vector0;
    typedef fusion::vector<element1_type &> vector1;
    typedef fusion::vector<element1_type &, element2_type> vector2;
    typedef fusion::vector<element1_type &, element2_type, element3_type> vector3;

    vector0 v0;
    vector1 v1(element1);

#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
    // Note: C++11 will pickup the rvalue overload for the d argument
    // since we do not have all permutations (expensive!) for all const&
    // and && arguments. We either have all && or all const& arguments only.
    // For that matter, use std::ref to disambiguate the call.

    vector2 v2(std::ref(element1), element2);
    vector3 v3(std::ref(element1), element2, std::ref(element3));
#else
    vector2 v2(element1, element2);
    vector3 v3(element1, element2, element3);
#endif

    test_sequence(v0);
    test_sequence(v1);
    test_sequence(v2);
    test_sequence(v3);

    typedef fusion::list<> list0;
    typedef fusion::list<element1_type &> list1;
    typedef fusion::list<element1_type &, element2_type> list2;
    typedef fusion::list<element1_type &, element2_type, element3_type> list3;

    list0 l0;
    list1 l1(element1);
    list2 l2(element1, element2);
    list3 l3(element1, element2, element3);

    test_sequence(l0);
    test_sequence(l1);
    test_sequence(l2);
    test_sequence(l3);

    return boost::report_errors();
}
Пример #8
0
int main(int argc, char *argv[])
{
    if (argc <= 1) 
        fixed_sequences();
    else {
        float arr[argc-1];  // convert string arguments to float vaules

        for (int i = 1; i < argc; i++) {
            char *end;
            arr[i-1] = strtof(argv[i], &end);
            if (*end != '\0' || errno) 
                error(1, errno, "invalid number '%s'", argv[i]);
        }
        test_sequence(0, arr, argc-1);
    }
    return 0;
}
Пример #9
0
void test_sequence1 () {
    std::vector<int> v;
    
    v.clear ();
    for ( int i = 5; i < 15; ++i )
        v.push_back ( i );
    test_sequence ( v, less_than<int>(3));      // no elements
    test_sequence ( v, less_than<int>(6));      // only the first element
    test_sequence ( v, less_than<int>(10));
    test_sequence ( v, less_than<int>(99));     // all elements satisfy 

//  With bidirectional iterators.
    std::list<int> l;
    for ( int i = 5; i < 16; ++i )
        l.push_back ( i );
    test_sequence ( l, less_than<int>(3));      // no elements
    test_sequence ( l, less_than<int>(6));      // only the first element
    test_sequence ( l, less_than<int>(10));
    test_sequence ( l, less_than<int>(99));     // all elements satisfy 

    }
Пример #10
0
static void fixed_sequences(void)
{
    float seq1[] = {4, 4.5, 5, 0};
    float seq2[] = {FLT_MAX, FLT_MAX};
    float seq3[] = {33333330, 66666660, 9};
    float seq4[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
    float seq5[] = {66666666, 3, -66666666};
    float seq6[] = {1 << 24, 1, 0, -1};
    float seq7[] = {1.5e8, 100.5, -1.5e8, 99.5};
    float seq8[] = {1e-45, 2e-45};
    // add your own sequences here !

    test_sequence(1, ARRAY_AND_COUNT(seq1));
    test_sequence(2, ARRAY_AND_COUNT(seq2));
    test_sequence(3, ARRAY_AND_COUNT(seq3));
    test_sequence(4, ARRAY_AND_COUNT(seq4));
    test_sequence(5, ARRAY_AND_COUNT(seq5));
    test_sequence(6, ARRAY_AND_COUNT(seq6));
    test_sequence(7, ARRAY_AND_COUNT(seq7));
    test_sequence(8, ARRAY_AND_COUNT(seq8));
}
Пример #11
0
int main(int argc, char *argv[])
{
  int mq_id;

  int i, max;

  int optc;
  int debug_level = 0;
  int addr = 0x10; 
  int reg_no=1000; 
  int reg_type = MB_TYPE_COILS;
  int value = 0;
  int timeout = 500;
  int mult = 0;



  mq_id = connect_ipc();
  flush_msg_ipc(mq_id);

  while ((optc = getopt(argc, argv, "a:t:r:m:s:g::S:T:R:hd::")) > 0) {
        switch (optc){ 
	  case 'a': //address
	    addr = atoi_adv(optarg);
	    break;
	  case 't': //register type
	    reg_type = reg_type_get(optarg);
	    break;
	  case 'r': //register number
	    reg_no = atoi_adv(optarg);
	    break;
	  case 'm':
	    mult = atoi_adv(optarg);
	    break;
	  case 'g':{
	      enum eValueTypes val_type = MV_TYPE_SHORT;
	      if(optarg)
		  if(optarg[0]=='l')
		      val_type = MV_TYPE_LONG;
	      if(read_cmd(mq_id, addr, reg_type, reg_no, val_type, &value, 1)==1)
		  printf("Read value %d\n", value);
	      else{
		  fprintf(stderr, "Error reading  value \n");
		  return 1;
	      }
	  }break;
	  case 's': //set register
	    value = atoi_adv(optarg);
	    write_cmd(mq_id,addr, reg_type, reg_no, mult, value, debug_level);
	    break;	    
	  case 'S':
	    
	    addr_scan( mq_id, addr, atoi_adv(optarg) , reg_type, reg_no); 
	    
	    break;
	  case 'R':
	    reg_scan(mq_id, addr, reg_type , reg_no, atoi_adv(optarg));
	    break;
	  case 'T':
	    test_sequence(mq_id,addr, reg_no, reg_type,  mult, optarg);
	    break;
	  case 'd':
	    debug_level  = 1;
	    break;
          case 'h': // Help
          default:
            fprintf(stderr, "%s", HelpText);
            exit(0);
            break;
        }
    }
    

 
  return EXIT_SUCCESS;
}
Пример #12
0
static size_t fixed_tests(char const *range, size_t *counter)
{
    size_t fail = 0;

    Colour seq_001[] = { WHITE, BLACK, RED };
    Colour seq_002[] = { WHITE, WHITE, WHITE };
    Colour seq_003[] = { RED, RED, RED };
    Colour seq_004[] = { BLACK, BLACK, BLACK };
    Colour seq_005[] = { RED, BLACK, WHITE };
    Colour seq_006[] = { WHITE, WHITE, RED, RED, BLACK, BLACK, WHITE };
    Colour seq_007[] =
    {
        BLACK, BLACK, WHITE, WHITE, RED, RED, BLACK, BLACK, WHITE,
        BLACK, BLACK,
    };
    Colour seq_008[] = { WHITE, BLACK };
    Colour seq_009[] = { BLACK, BLACK, RED, RED, WHITE, WHITE, RED };
    Colour seq_010[] = { BLACK, BLACK, RED, WHITE, RED };
    Colour seq_011[] =
    {
        RED, BLACK, RED, WHITE, RED, RED, BLACK, WHITE, RED, BLACK, RED,
        BLACK, BLACK, RED, BLACK, WHITE, BLACK, WHITE, WHITE, WHITE,
        WHITE, RED, RED, RED, RED, BLACK, WHITE
    };
    Colour seq_012[] =
    {
        WHITE, WHITE, RED, WHITE, RED, BLACK, RED, BLACK, WHITE, BLACK,
        RED, RED, RED, WHITE, RED, RED, BLACK, BLACK, BLACK, RED, RED,
        BLACK, BLACK, WHITE, WHITE, RED, WHITE, BLACK, RED, BLACK,
        WHITE, RED, WHITE, WHITE, RED, WHITE, BLACK, RED, RED, RED,
        WHITE,
    };
    Colour seq_013[] = { RED, WHITE, RED, };
    Colour seq_014[] = { RED, WHITE, };
    Colour seq_015[] = { RED, BLACK, };
    Colour seq_016[] = { RED, RED, };
    Colour seq_017[] = { BLACK, WHITE, };
    Colour seq_018[] = { BLACK, BLACK, };
    Colour seq_019[] = { BLACK, RED, };
    Colour seq_020[] = { WHITE, WHITE, };
    Colour seq_021[] = { WHITE, RED, };
    Colour seq_022[] = { RED, WHITE, RED, WHITE, };
    Colour seq_023[] =
    {
        RED, WHITE, RED, WHITE, RED, RED, WHITE, WHITE, WHITE,
    };
    Test tests[] =
    {
        { seq_001, sizeof(seq_001)/sizeof(seq_001[0]) },
        { seq_002, sizeof(seq_002)/sizeof(seq_002[0]) },
        { seq_003, sizeof(seq_003)/sizeof(seq_003[0]) },
        { seq_004, sizeof(seq_004)/sizeof(seq_004[0]) },
        { seq_005, sizeof(seq_005)/sizeof(seq_005[0]) },
        { seq_006, sizeof(seq_006)/sizeof(seq_006[0]) },
        { seq_007, sizeof(seq_007)/sizeof(seq_007[0]) },
        { seq_008, sizeof(seq_008)/sizeof(seq_008[0]) },
        { seq_009, sizeof(seq_009)/sizeof(seq_009[0]) },
        { seq_010, sizeof(seq_010)/sizeof(seq_010[0]) },
        { seq_011, sizeof(seq_011)/sizeof(seq_011[0]) },
        { seq_012, sizeof(seq_012)/sizeof(seq_012[0]) },
        { seq_013, sizeof(seq_013)/sizeof(seq_013[0]) },
        { seq_014, sizeof(seq_014)/sizeof(seq_014[0]) },
        { seq_015, sizeof(seq_015)/sizeof(seq_015[0]) },
        { seq_016, sizeof(seq_016)/sizeof(seq_016[0]) },
        { seq_017, sizeof(seq_017)/sizeof(seq_017[0]) },
        { seq_018, sizeof(seq_018)/sizeof(seq_018[0]) },
        { seq_019, sizeof(seq_019)/sizeof(seq_019[0]) },
        { seq_020, sizeof(seq_020)/sizeof(seq_020[0]) },
        { seq_021, sizeof(seq_021)/sizeof(seq_021[0]) },
        { seq_022, sizeof(seq_022)/sizeof(seq_022[0]) },
        { seq_023, sizeof(seq_023)/sizeof(seq_023[0]) },
    };
    enum { NUM_TESTS = sizeof(tests) / sizeof(tests[0]) };

    *counter = 0;
    if (range != 0)
    {
        const char *ptr = range;
        const char *nxt;
        long lo;
        long hi;
        while ((nxt = parse_range(ptr, &lo, &hi)) != 0)
        {
            if (nxt == ptr)
                err_error("invalid range string (%s)\n", range);
            if (hi == 0)
                hi = NUM_TESTS-1;
            for (long i = lo; i <= hi; i++)
            {
                (*counter)++;
                if (test_sequence(tests[i]) == false)
                {
                    printf("Test %ld: Failed\n", i);
                    fail++;
                }
            }
            ptr = nxt;
        }
    }
    else
    {
        for (size_t i = 0; i < NUM_TESTS; i++)
        {
            (*counter)++;
            if (test_sequence(tests[i]) == false)
            {
                printf("Test %ld: Failed\n", i);
                fail++;
            }
        }
    }

    return fail;
}
Пример #13
0
TEST_F(queue_test, iterator)
{
    test_end();
    test_sequence();
}