Michael Miller
c1195ef687
Simplify macro eval by returning a lazy double
2022-03-31 18:54:39 -06:00
Michael Miller
7896a3496d
Remove unused objects
2022-03-30 21:11:38 -06:00
Michael Miller
231323bbf1
Add return type restriction
...
This overrides the previous definition which doesn't have a restriction.
This is a workaround for the inability to infer a stub's return type.
2022-03-30 21:10:36 -06:00
Michael Miller
b3f98cd50c
Add return type annotation
...
Required for type resolution.
2022-03-30 20:51:38 -06:00
Michael Miller
ef64fa466b
Avoid type cast issues
2022-03-30 20:44:43 -06:00
Michael Miller
613c969fbb
Match RSpec behavior
2022-03-30 20:28:36 -06:00
Michael Miller
a8e55e32d2
Works now due to lazy doubles
2022-03-30 19:13:14 -06:00
Michael Miller
1199379833
Various fixes
2022-03-26 00:12:37 -06:00
Michael Miller
28ae03d56f
Remove expect_null_double
...
Workaround no longer needed.
2022-03-25 22:45:13 -06:00
Michael Miller
b28437ccc4
Match RSpec behavior
2022-03-25 22:32:27 -06:00
Michael Miller
5aceaf7d8c
Comment out problematic casts
...
Specs compile again.
2022-03-22 22:13:59 -06:00
Michael Miller
0b6e44c227
Fix types of arguments given to common object methods
2022-03-20 15:39:19 -06:00
Michael Miller
e209fe3eb5
Use Box for Wrapper implementation
...
This won't raise on invalid casts.
It should reduce the amount of instantiated types and methods.
2022-03-19 22:53:50 -06:00
Michael Miller
bed84b315d
Add lazy double
2022-03-19 19:32:41 -06:00
Michael Miller
1657d3577d
Fix test of double name
2022-03-19 18:57:39 -06:00
Michael Miller
b3fa2e3bfe
Address Ameba issues
2022-03-19 17:22:13 -06:00
Michael Miller
b83c6b7b1e
Remove or skip mock, double, and stub tests
2022-03-19 17:20:15 -06:00
Michael Miller
0c7f72dc78
Test handling of blocks in doubles
2022-03-19 17:04:51 -06:00
Michael Miller
043ebd818f
Fix argument order
2022-03-19 16:42:14 -06:00
Michael Miller
17e97cb39a
Explode method expansion
...
Somewhere along the way the block argument gets dropped.
Even though `method` is a `Def` that accepts a block, the `&block` portion is dropped.
Possible Crystal compiler bug.
2022-03-19 16:13:11 -06:00
Michael Miller
99aa8afdce
Add as_null_object method
2022-03-19 14:41:45 -06:00
Michael Miller
5d21e4bb71
Remove double_dsl_spec
2022-03-19 14:27:00 -06:00
Michael Miller
3fa6baea4d
Test mixing block and keyword stubs
2022-03-19 12:52:23 -06:00
Michael Miller
9091b8d027
Literally inject stubs from double block
2022-03-19 12:28:00 -06:00
Michael Miller
f1daecd25f
Initial spec for double DSL
2022-03-19 11:41:29 -06:00
Michael Miller
4f7a4a3453
Avoid issue with TypeCastError message
...
For some reason, attempting to get the class of the stubbed value causes a segfault.
This appears to get swallowed in some cases.
Trying to inspect the value was difficult without triggering some error.
In the failing case, the value is 42 (returned by a stubbed foo method).
The method is supposed to return a String, and this error checking should be triggered (line 119).
The value is a union, and inspecting the bytes contained in it looks like it's prefixed with the Crystal type ID for Int32.
However it looks like Crystal tries to treat it as a Bool? I'm not sure.
Very weird behavior and instead of wasting more time on it, I'm omitting the returned type from the error.
This type of casting error shouldn't be common.
This seems like a Crystal bug, but I'm having a hard time distilling the issue.
2022-03-16 22:40:24 -06:00
Michael Miller
b68c75dda5
Add tests around problematic issues in NullDouble to Double
2022-03-16 21:10:47 -06:00
Michael Miller
280f117e23
Use TypedStub instead of ValueStub
...
Test possible issues around stub returning nil
2022-03-16 21:07:20 -06:00
Michael Miller
332ab1cebc
Smarter handling of stub fallback
2022-03-15 22:46:43 -06:00
Michael Miller
5ad29f486f
Better formatting for empty arguments
2022-03-12 17:49:07 -07:00
Michael Miller
ca827a3c52
Initial work on null (object) double
2022-03-12 17:07:34 -07:00
Michael Miller
1e7e31ff97
Use true instead of false
...
It's more obvious the stub worked when same? reports true for different objects.
2022-03-12 15:52:48 -07:00
Michael Miller
ea46af00a6
Add method to define stubs
2022-03-12 14:31:19 -07:00
Michael Miller
5b1a5cd49d
Update tests to use new Double usage
2022-03-12 13:54:40 -07:00
Michael Miller
76c1d6a096
Some rework of stubs and doubles
2022-03-12 09:39:32 -07:00
Michael Miller
7c8db07eda
Test ValueStub
2022-03-05 20:57:43 -07:00
Michael Miller
ae14a47329
Rename Response to Stub
2022-03-05 20:09:56 -07:00
Michael Miller
ced98778a4
Document and test MethodCall
2022-03-05 16:15:42 -07:00
Michael Miller
13f185b801
Capture and report arguments in exception message
2022-03-05 16:06:01 -07:00
Michael Miller
75ccda0a86
Test responses on inherited methods
2022-03-05 15:39:35 -07:00
Michael Miller
ac007f8565
Test response constraints
2022-03-05 15:00:11 -07:00
Michael Miller
2adc867843
Initial work on response constraints
2022-03-05 10:41:39 -07:00
Michael Miller
de7cd90d11
Add type capturing arguments
2022-03-04 17:16:45 -07:00
Michael Miller
5644d54470
Support double names
2022-03-03 22:31:40 -07:00
Michael Miller
26deea3d20
Initial work on Double
2022-03-03 22:10:09 -07:00
Michael Miller
eb8bd88927
Handle case with typeless block
...
Fixes syntax:
`stub method(&block)`
To stub a block with args, use:
`stub method(&block : Type -> Type)`
Addresses https://github.com/icy-arctic-fox/spectator/issues/42
2022-02-21 18:17:44 -07:00
Michael Miller
92e839415d
Fix sample iteration with single block arg (not tuple)
2022-01-26 13:14:30 -07:00
Michael Miller
4057089c20
Support multiple block arguments in sample block
...
https://github.com/icy-arctic-fox/spectator/issues/41#issuecomment-1010192486
2022-01-11 15:53:53 -07:00
Michael Miller
c1841526d4
Test string interpolation with sample
2022-01-10 21:49:54 -07:00
Michael Miller
dd49fe3a67
Support string interpolation for example names
2022-01-10 21:29:05 -07:00