GithubHelp home page GithubHelp logo

libgod's People

Contributors

krouk avatar theirix avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

ogred3d davidquan

libgod's Issues

storage::read/write throws exception basic_ios::clear in full filenames specified

Тест testunionio считывает с диска входной файл с данными в память, потом снова его серилизует на диск и мы сравниваем, что два файла равны друг другу.

Если вызывать вот так:

testunionio input.union1 input.union1.out

Все ОК. Но если вот так:

testunionio /home/artyom/workspace/libgod/build/input.union1 /home/artyom/workspace/libgod/build/input.union1.out

То кидает эксепшн:

Running test /home/artyom/workspace/libgod/test/testunionio.cxx
 #0 ./testunionio
 #1 /home/artyom/workspace/libgod/build/input.union1
 #2 /home/artyom/workspace/libgod/build/input.union1.out
Test error: basic_ios::clear

Тест вроде предельно похож на то, что реализовано было в fileread, команды CTest в CMakeList тоже аналогичны. Но падает.

add parameters inherit for libgod::Set and libgod::Uninon dflt consturctors

Общая идея, чтобы вот такой код работал:

    libgod::Set set1;
    libgod::Point pt(4,3);

    set1.add(pt);

То есть, если используется конструктор по умолчанию для Union и Set, то первый добавленный элемент со значимыми параметрами инициализирует параметры Set или Union.

build.sh doesn't build

Two problems:

  1. It started to show that cmake_minimum_required(VERSION 2.8) is required.
  2. ./build.sh
    -- Copying input1.asn1
    -- Copying input2.asn1
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/artyom/workspace/libgod
    make: *** Не заданы цели и не найден make-файл. Останов.

undefined reference to `pthread_getspecific'

Вроде установил gtest по твоей и еще куче гугловским инструкциям, поправил build.conf, но при попытке собрать весь проект получаю:

/home/artyom/workspace/gtest-1.6.0/libgtest.a(gtest-all.cc.o): In function 'testing::internal::ThreadLocal<testing::TestPartResultReporterInterface*>::~ThreadLocal()':
gtest-all.cc:(.text._ZN7testing8internal11ThreadLocalIPNS_31TestPartResultReporterInterfaceEED1Ev[testing::internal::ThreadLocal<testing::TestPartResultReporterInterface*>::~ThreadLocal()]+0x11): undefined reference to `pthread_getspecific'

Нашел что-то подобное на stackoverflow (http://stackoverflow.com/questions/10315016/error-during-making-gtest), но честно хз, так как там говорят надо внести изменения в g++ строчку, а это твоя привилегия :)

P.S. Я пытался клинить весь проект и пересобирать, тоже самое.

wrong output when use setparameters and setcriteria functions

Если я пишу вот такой код

    //input.union2: Union with 2 sets each has 2 points
    libgod::Union un2(5,3);

    double parameters[] = {1.2, -0.9, 6.7, 1.209, 4.731};
    double criteria[] = {0.99, 0.76, 0.12};

    for (int i=0; i<un2.size(); i++) {
        libgod::Set& s = un2.add();
        for (int j=0; j<2; j++) {
            libgod::Point& p = s.add();
            p.setParameters(parameters);
            p.setCriteria(criteria);
        }
    }

    libgod::Storage st2("input.union2");
    st2.write(un2);
    st2.dump(std::cout, un2);

то dump() выводит:


1



5
3
0



Да и input.union2 получается подозрительно маленький
-rw-r--r-- 1 artyom artyom 22 Июл 8 01:38 input.union2

test_comparable failing with gcc-4.4

Works on osx/gcc-4.2, osx/clang-4.0, but fails on linux/gcc-4.4

2/8 Test #2: test_comparable ..................***Failed    0.01 sec
Running main() from gtest_main.cc
[==========] Running 3 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 3 tests from Comparable
[ RUN      ] Comparable.Strict
[       OK ] Comparable.Strict (1 ms)
[ RUN      ] Comparable.NonStrict
[       OK ] Comparable.NonStrict (0 ms)
[ RUN      ] Comparable.Union
/home/irix/projects/libgod/test/test_comparable.cxx:85: Failure
Value of: c(u1,u2)
  Actual: false
Expected: true
/home/irix/projects/libgod/test/test_comparable.cxx:86: Failure
Value of: !c(u2,u1)
  Actual: false
Expected: true
[  FAILED  ] Comparable.Union (1 ms)
[----------] 3 tests from Comparable (2 ms total)

change filename for Storage

Текущая реализация класса Storage не позволяет менять файл ввода или вывода. То есть, если я хочу ввести или распечатать данные для нескольких union, то придется создавать несколько экземпляров класса Storage.

Так же класс Storage поддерживает только Union в даный момент. Может имеет смысл расширить его до Set и Point?

change filename for Storage

Текущая реализация класса Storage не позволяет менять файл ввода или вывода. То есть, если я хочу ввести или распечатать данные для нескольких union, то придется создавать несколько экземпляров класса Storage.

Так же класс Storage поддерживает только Union в даный момент. Может имеет смысл расширить его до Set и Point?

desctructor for Union

Я попытлся вызвать un.~Union(); чтобы убить объект в явном виде, скомпилилось, но упало с ошибкой.

Надо бы прояснить вопрос с тем стоит ли вызывать деструкторы или просто как убивать объекты корректно.

*** glibc detected *** ./gendata4test: double free or corruption (fasttop): 0x08c1f038 ***
======= Backtrace: =========
/lib/i686/cmov/libc.so.6(+0x6b381)[0xb752c381]
/lib/i686/cmov/libc.so.6(+0x6cbd8)[0xb752dbd8]
/lib/i686/cmov/libc.so.6(cfree+0x6d)[0xb7530cbd]
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0xb7708701]
./gendata4test(_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN6libgod3SetEEE10deallocateEPS4_j+0x11)[0x804a4f3]
./gendata4test(_ZNSt10_List_baseIN6libgod3SetESaIS1_EE11_M_put_nodeEPSt10_List_nodeIS1_E+0x20)[0x804a3a8]
./gendata4test(_ZNSt10_List_baseIN6libgod3SetESaIS1_EE8_M_clearEv+0x84)[0x804a242]
./gendata4test(_ZNSt10_List_baseIN6libgod3SetESaIS1_EED2Ev+0x13)[0x804a0a3]
./gendata4test(_ZNSt4listIN6libgod3SetESaIS1_EED1Ev+0x11)[0x804a019]
./gendata4test(_ZN6libgod9ContainerINS_3SetESt4listIS1_SaIS1_EEED2Ev+0x44)[0x804a060]
./gendata4test(_ZN6libgod5UnionD1Ev+0x11)[0x804a079]
./gendata4test(main+0x155)[0x8049f09]
/lib/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0xb74d7ca6]
./gendata4test[0x8049d21]
======= Memory map: ========
08048000-0804c000 r-xp 00000000 08:01 1217240 /home/artyom/workspace/libgod/build/examples/gendata/gendata4test
0804c000-0804d000 rw-p 00003000 08:01 1217240 /home/artyom/workspace/libgod/build/examples/gendata/gendata4test
08c1f000-08c40000 rw-p 00000000 00:00 0 [heap]
b7300000-b7321000 rw-p 00000000 00:00 0
b7321000-b7400000 ---p 00000000 00:00 0
b74c0000-b74c1000 rw-p 00000000 00:00 0
b74c1000-b7601000 r-xp 00000000 08:01 538817 /lib/i686/cmov/libc-2.11.3.so
b7601000-b7602000 ---p 00140000 08:01 538817 /lib/i686/cmov/libc-2.11.3.so
b7602000-b7604000 r--p 00140000 08:01 538817 /lib/i686/cmov/libc-2.11.3.so
b7604000-b7605000 rw-p 00142000 08:01 538817 /lib/i686/cmov/libc-2.11.3.so
b7605000-b7608000 rw-p 00000000 00:00 0
b7608000-b7625000 r-xp 00000000 08:01 522243 /lib/libgcc_s.so.1
b7625000-b7626000 rw-p 0001c000 08:01 522243 /lib/libgcc_s.so.1
b7626000-b764a000 r-xp 00000000 08:01 538799 /lib/i686/cmov/libm-2.11.3.so
b764a000-b764b000 r--p 00023000 08:01 538799 /lib/i686/cmov/libm-2.11.3.so
b764b000-b764c000 rw-p 00024000 08:01 538799 /lib/i686/cmov/libm-2.11.3.so
b764c000-b764d000 rw-p 00000000 00:00 0
b764d000-b7736000 r-xp 00000000 08:01 728156 /usr/lib/libstdc++.so.6.0.13
b7736000-b773a000 r--p 000e9000 08:01 728156 /usr/lib/libstdc++.so.6.0.13
b773a000-b773b000 rw-p 000ed000 08:01 728156 /usr/lib/libstdc++.so.6.0.13
b773b000-b7742000 rw-p 00000000 00:00 0
b7751000-b7752000 rw-p 00000000 00:00 0
b7752000-b779d000 r-xp 00000000 08:01 1217201 /home/artyom/workspace/libgod/build/lib/libgod.so.1.0.0
b779d000-b77a0000 rw-p 0004a000 08:01 1217201 /home/artyom/workspace/libgod/build/lib/libgod.so.1.0.0
b77a0000-b77a2000 rw-p 00000000 00:00 0
b77a2000-b77a3000 r-xp 00000000 00:00 0 [vdso]
b77a3000-b77be000 r-xp 00000000 08:01 523984 /lib/ld-2.11.3.so
b77be000-b77bf000 r--p 0001b000 08:01 523984 /lib/ld-2.11.3.so
b77bf000-b77c0000 rw-p 0001c000 08:01 523984 /lib/ld-2.11.3.so
bfeba000-bfecf000 rw-p 00000000 00:00 0 [stack]

storage::read doesn't work

Привет. Может я сам и внес багу, криво добавив Union::Union(). Но он по-любому нужен для того, чтобы инициализировать множества из файла. Я использовал вот такой код:
libgod::Union un;
libgod::Storage st( argv[1] );

    st.read(un);

    //Print dump to stdout
    st.dump(std::cout, un);

И вывод получается как будто ничего не было считано. Вывод dump() как раз это и показывает:


1



1
1
0



libgod::Point should throw exception in case of equal ptr usage

// Pass equal pointers to array
int testpoint_constructor_array_eq_ptr() {
    bool is_thrown = false;

    double* a = new double [10];

    try {
        libgod::Point pt1(10,10,a,a);
    }
    catch (libgod::GodError& ge) {
        is_thrown = true;
    }
    ASSERT_TRUE(is_thrown);

    delete(a);

    return !is_thrown;
}

Формально все корректно. Но имхо либа не должна этого позволять, так как это с точки зрения задачи абсолютно не логично и ведет к косякам в программировании алгоритмов.

if I pass pointers to arrays with larger size than dims, it works

// Pass pointers to array smaller than specified in dimensions
int testpoint_constructor_array_larger_dim() {
    bool is_thrown = false;

    double* a = new double [10];
    double* b = new double [6];

    try {
        libgod::Point pt1(4,3,a,b);
    }
    catch (libgod::GodError& ge) {
        is_thrown = true;
    }
    ASSERT_TRUE(is_thrown);

    return !is_thrown;
}

Это бага или фича. По идее ты в memcpy указываешь сколько надо скопировать. Поэтому мы не получаем ошибку сегментации, но логически это неправильно. Или оставим на совесть пользователя?

segmentaion fault for null pointers in libgod::Point

// Pass not valid pointers to libgod::Point constructor
int testpoint_constructor_null_ptrs() {
    bool is_thrown = false;

    double a[5];

    try {
        libgod::Point pt1(7,2, a, 0);
        libgod::Point pt2(7,2, 0, a);
        libgod::Point pt3(3,4, 0, 0);
    }
    catch (libgod::GodError& ge) {
        is_thrown = true;
    }
    ASSERT_TRUE(is_thrown);

    return !is_thrown;
}

Segmentation fault.

И как в развитие мысли. Если мы туда будем передавать не нулевые поинтеры, а невалидные. Например (double*)1000, то тоже будет падать с ошибкой сегментирования. Оставим это как есть или можно что-нибудь сделать?

liggod::Set set1(<negative number>, num) doesn't thrown exception

Привет, вот такой вот код не кидает эксепшена. Может я томожу конечно, но по идее должно кидаться

// Check if dim paramteres is negative and dim criteria is positive
    is_thrown = false;  
    try {
        libgod::Set set1(-10, 2);
    }
    catch (libgod::GodError& ge) {
        is_thrown = true;
    }
    ASSERT_TRUE(is_thrown);

    // Check if only dim criteria is negative
    is_thrown = false;
    try {
        libgod::Set set1(3, -5);    
    }
    catch (libgod::GodError& ge) {
        is_thrown = true;
    }
    ASSERT_TRUE(is_thrown);

    // Check if both parameters are negative
    is_thrown = false;
    try {
        libgod::Set set1(-7, -5);   
    }
    catch (libgod::GodError& ge) {
        is_thrown = true;
    }
    ASSERT_TRUE(is_thrown);

В ответ

terminate called after throwing an instance of 'libgod::assert_exception'
what(): assertTrue at 63 : false - 0
Аварийный останов

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.