Michael Miller
f63f8b15a0
Use label (expression string) instead of value
2018-09-24 22:58:35 -06:00
Michael Miller
371fe680c2
Pass matcher messages to failure results
2018-09-24 22:57:37 -06:00
Michael Miller
8fb051d61e
Add custom messages for matchers
...
This gives users natural, easier to understand text for expectations.
2018-09-24 22:56:48 -06:00
Michael Miller
562b544223
Capture expression string from expectations
...
This allows a string that the user had in source code instead of a resolved value.
This change requires storing a 'label' and changing expectation and matcher constructor methods to macros.
2018-09-24 22:51:26 -06:00
Michael Miller
ef7e0462cb
GivenExampleGroupBuilder produces group of groups
...
Now a group is created for each element in the collection.
A group to contain the sub-groups is returned.
2018-09-24 00:25:15 -06:00
Michael Miller
1c7c6e5e90
Initial code for example names
2018-09-23 20:24:28 -06:00
Michael Miller
5e4f0f3bbc
Initial formatting output for failures
2018-09-23 18:00:01 -06:00
Michael Miller
dcbca302dc
Fix values being wrapped twice
...
This simplifies some code.
2018-09-23 17:13:30 -06:00
Michael Miller
cf0c438a5d
Abstract away locals to SampleValues
2018-09-23 17:04:06 -06:00
Michael Miller
cddfe5591d
Move ValueWrapper and TypedValueWrapper to Internals
...
Trying to hide from top-level some inner-workings.
2018-09-23 16:23:26 -06:00
Michael Miller
887a04a92a
Remove unused classes
2018-09-23 16:13:48 -06:00
Michael Miller
7a6045a1f3
Change #it_behaves_like to a macro
2018-09-23 16:10:07 -06:00
Michael Miller
b3b8efdd59
Mark helper macros private
2018-09-23 16:07:58 -06:00
Michael Miller
70e37eeccf
DRY up DSL
2018-09-23 16:07:03 -06:00
Michael Miller
0f323666a0
Fix methods for adding hooks
2018-09-23 15:41:58 -06:00
Michael Miller
855a5f2239
Move hook storage to their own class
2018-09-23 15:26:19 -06:00
Michael Miller
57c9f2c58e
Copy/paste to reimplement pending examples
2018-09-23 14:53:32 -06:00
Michael Miller
56ae92a25d
Add symbol for getting local from #given
2018-09-23 14:45:36 -06:00
Michael Miller
3c31783fd7
Pass arguments directly onto initializer with splat
2018-09-23 14:45:14 -06:00
Michael Miller
03a8efd7f8
Create test instance when example is created
...
This exposes errors in the framework
instead of delaying them until the test runs.
2018-09-23 14:39:05 -06:00
Michael Miller
94e2f54713
Implement building groups and examples
2018-09-23 14:34:42 -06:00
Michael Miller
5b79e76b44
Use builder to get example group
2018-09-23 13:40:24 -06:00
Michael Miller
037fe604ea
Example group builder classes should build groups
...
It's implied in their name.
2018-09-23 13:40:16 -06:00
Michael Miller
d551cf6e1b
Add missing GivenExampleGroupBuilder class
2018-09-23 12:27:21 -06:00
Michael Miller
6bf07e3967
Collection for #given is now an array of ValueWrapper
2018-09-23 12:27:08 -06:00
Michael Miller
faf3bef05c
Fix typo
2018-09-23 12:21:10 -06:00
Michael Miller
fc1c0351cd
Must use class variables
2018-09-23 12:19:29 -06:00
Michael Miller
ab7087649d
Example wrappers need a top-level initializer
...
The default initializer made by the compiler takes no arguments.
Use this one to not create a default initializer.
2018-09-23 12:19:07 -06:00
Michael Miller
ecba0d00ec
Pass group to example initializer
2018-09-23 12:16:38 -06:00
Michael Miller
09184f4a2a
Group builder needs "what" as first arg
2018-09-23 12:15:53 -06:00
Michael Miller
0999cb2dbc
Use fully-qualified names
2018-09-23 12:05:19 -06:00
Michael Miller
9109fc30fd
Can pass types around (somewhat) at runtime
...
No need for extra factory classes.
2018-09-23 12:03:52 -06:00
Michael Miller
87d9cc438f
Move code for root back to Spectator#describe
...
There seems to be a problem using def in block.
This broke helper methods and gives the error: `can't declare def
dynamically`.
2018-09-23 12:02:51 -06:00
Michael Miller
9ba3fc898b
More refatoring
2018-09-22 19:41:56 -06:00
Michael Miller
a1b5533504
Some initial work to cleanup the DSL builder
2018-09-22 15:15:29 -06:00
Michael Miller
ff382ba372
Idea for new hook types
2018-09-22 12:35:44 -06:00
Michael Miller
a82076e2b7
Remove type from group macros
...
This value is never directly seen,
so it isn't necessary to support it.
2018-09-22 11:38:00 -06:00
Michael Miller
110a2b2d2a
Quick exception handler for framework
...
This should be improved later.
2018-09-21 15:23:01 -06:00
Michael Miller
66ca06337d
Fix locals not being passed to child groups
2018-09-21 14:26:09 -06:00
Michael Miller
a9d4acda36
Pass locals to example and test wrapper initializer
...
The #initialize method is defined in each context/given/module
that needs to add a local.
This is an elegant (although possibly confusing) solution.
2018-09-21 14:03:09 -06:00
Michael Miller
cba0abc7f1
Fixes for enumerating examples
2018-09-20 18:41:36 -06:00
Michael Miller
39be62c511
Temp disable until I figure out how to reference wrapped example
2018-09-20 18:41:21 -06:00
Michael Miller
007572f0b8
Get rid of #add_examples
...
Added #example_count method to help with array sizing.
2018-09-19 23:13:43 -06:00
Michael Miller
8b8981494d
Trying to get exaples to map to their given values
2018-09-19 23:00:17 -06:00
Michael Miller
aaf973b8cf
Concat #all_examples instead of recursive #add_examples
2018-09-19 22:28:20 -06:00
Michael Miller
4d601281f6
Delay example creation by using factories
...
The #given block functionality specifically needs this to create
multiple examples.
2018-09-19 21:58:32 -06:00
Michael Miller
bb7f036a82
Make Example#group abstract
...
Instead of passing parent group as an argument, define the group method
in the exapmle class created by the #it macro.
2018-09-19 21:50:51 -06:00
Michael Miller
0f7640411f
Use symbols instead of strings for hash lookups
2018-09-19 21:06:10 -06:00
Michael Miller
a28f512ae4
Some code for repeating examples in given blocks
2018-09-19 20:49:01 -06:00
Michael Miller
830aa7b43a
Structural code for enumerating given value sets
2018-09-19 20:00:26 -06:00