Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Oct 22 11:46
    risaldar closed #356
  • Oct 15 06:49
    khuang0312 edited #362
  • Oct 15 06:46
    khuang0312 edited #362
  • Oct 15 06:45
    khuang0312 edited #362
  • Oct 15 06:45
    khuang0312 opened #362
  • Oct 06 22:59
    Eazhi synchronize #361
  • Oct 06 22:55
    Eazhi synchronize #361
  • Oct 05 14:36
    utybo commented #229
  • Oct 04 00:57
    Eazhi synchronize #361
  • Oct 04 00:54
    Eazhi synchronize #361
  • Oct 04 00:44
    Eazhi opened #361
  • Oct 02 14:29
    zbeaoce opened #360
  • Oct 01 23:29
    paul000001 closed #358
  • Sep 16 19:51
    stef commented #221
  • Sep 04 21:11
    yesudeep opened #359
  • Aug 22 13:29
    paul000001 commented #358
  • Aug 15 06:37
    Snaipe closed #349
  • Aug 15 06:37
    Snaipe commented #349
  • Aug 15 06:28
    Snaipe commented #358
  • Aug 13 23:43
    paul000001 commented #358
Douman
@DoumanAsh
Not right now, i'll push my code and will link it
Douman
@DoumanAsh
Here is repo https://github.com/DoumanAsh/lazy-winapi.c - It relies on WinAPI so it works only on windows... Do you use Windows? If not maybe i could try to make some more simple example. You can build it with Cmake UNIT_TESTING option and then build unit tests with make. In result there should be ut.exe, but these tests are stable only with -j1 :(
If i try to change mmk_eq(UINT, format) over https://github.com/DoumanAsh/lazy-winapi.c/blob/master/test/clipboard_mock.c#L38 with a different value of format, test will pass. But if i do the same over line https://github.com/DoumanAsh/lazy-winapi.c/blob/master/test/clipboard_mock.c#L42 then it fails
Not sure if i got it right though
Franklin Mathieu
@Snaipe
If you're changing the parameter in mmk_verify to format + 1, you also need to make sure that GetClipboardData gets passed format + 1
in essence mmk_verify, well, verifies that GetClipboardData gets called with the right parameters, so you'd need to change format to format + 1 on lines 38, 40, and 42
(in clipboard_mock.c)
Douman
@DoumanAsh
But what will happen if i wouldn't pass it to GetCLipboardData? As of now test works ok
also i changed mmk_when, not mmk_verify
I assumed if i would change mmk_when then mmk_verify would fail, but it works
Franklin Mathieu
@Snaipe
both are actually independent
mmk_when specifies what happens at runtime when the function gets called
mmk_verify checks whether the function was called the way you wanted
they can work together or independently
Douman
@DoumanAsh
hm... but i don't exactly get mmk_when then.. i expected that it would invoke mock only when i pass format +1 to mock, but it gets invoked anyway
is there any purpose in specifying condition?
Franklin Mathieu
@Snaipe
by condition do you mean mmk_eq(UINT, format)rather than just format?
however mmk_eq is only relevant when you use other matchers
Douman
@DoumanAsh
yes, i meant mmk_eq(UINT, format) and by format + 1 i meant mmk_eq(UINT, format + 1)
Franklin Mathieu
@Snaipe
if so, yes, there is in fact no difference in this case between the two syntaxes
Douman
@DoumanAsh
and i'm confused because it makes no difference to my mock having either mmk_eq(UINT, format) or mmk_eq(UINT, format + 1)
Franklin Mathieu
@Snaipe
for instance mmk_when(func(1, mmk_le(int, 2)), .then_return = 0) is illegal because you can't mix matchers and non-matchers, so you need to use mmk_eq(int, 1) in this case
and in your case, it doesn't make any difference because by default the mock returns a zero-ish value for unspecified parameters
so, in your case, it always returns NULL
Douman
@DoumanAsh
aha... so that's why
Franklin Mathieu
@Snaipe
if you need it to return a valid clipboard HANDLE for certain values, I would probably call GetClipboardData before creating the mock, and do something like mmk_when(GetClipboardData(42), .then_return = the_handle)
Douman
@DoumanAsh
Well, i'm testing negative paths of my functions. For positive cases i use simple tests without mocks as there is no need
Btw is it indented that without any mmk_when my test would crash, if by default all mocks return NULL ?
Franklin Mathieu
@Snaipe
sounds like a bug
Douman
@DoumanAsh
I get this assertion failure E:/Downloads/Git/c_plus_plus/lazy-winapi/build/3pp/src/Mimick/src/matcher.c:51: Assertion failed: v__ != NULL
when i jsut remove any mmk_when
Franklin Mathieu
@Snaipe
no mmk_when and 1 mmk_verify, right?
I think mmk_when does some initialization that should have been mirrored in mmk_verify
Douman
@DoumanAsh
yes
hmm... i see, but i suppose it would be better for user to specify mmk_when regardless of default return value. Just this assertion makes no sense :)
Anyway, mimick is great :) though it is impossible to read compile errors/warnings :D
Franklin Mathieu
@Snaipe
If you're using a GNU compiler, you can reduce the verbosity of compile errors with -isystem=/path/to/mimick/include
Douman
@DoumanAsh
cool, thanks for a tip
Franklin Mathieu
@Snaipe
If you're using a GNU compiler, you can reduce the verbosity of compile errors with -isystem=/path/to/mimick/include
unfortunately I don't think there's a similar trigger for MSVC :/
(also sorry if my messages appear late and/or out of order, I'm on a train)
Douman
@DoumanAsh
well i prefer gcc as MSVC is just bloatware so iti s fine :)
thanks for help, again. Good luck you on your way.
Franklin Mathieu
@Snaipe
No problem, it's the least I can do.
Yuriy Yarosh
@yuriy-yarosh

o/
cr_malloc returns NULL on MacOS, for unknown reason.

Test(uri_tests, emptySchemaShouldBeParsed) {

    URI* testURI = cr_malloc(sizeof(URI));
    cr_log_warn("%u", (uint) sizeof(URI));
    cr_log_error("%u", (uint) testURI);
    cr_assert_not_null(testURI, "URI should be allocated");
...

leads to

[WARN] 88
[ERR ] 0
[----] ~/src/.../Tests/uri_test.c:12: Assertion failed: URI should be allocated
[FAIL] uri_tests::emptySchemaShouldBeParsed: (0.00s)
[====] Synthesis: Tested: 1 | Passing: 0 | Failing: 1 | Crashing: 0
Franklin Mathieu
@Snaipe
cr_malloc is only relevant when allocating memory from outside a test that should be inherited, just use malloc from within the test
Yuriy Yarosh
@yuriy-yarosh
I don't get what "allocating memory from outside" means...
Franklin Mathieu
@Snaipe
From a report hook, basically
Tests run in their own process, cr_malloc is here to ensure that memory allocated in the parent process gets inherited in the child process
Yuriy Yarosh
@yuriy-yarosh
ah... so basically it's better to go for cr_malloc in setup teardown hooks, right ?