Commit graph

214 commits

Author SHA1 Message Date
Michael Miller
5d86b4f50e Get examples working again 2019-09-12 20:26:54 -06:00
Michael Miller
08ee03b1de Quickly get things somewhat working again 2019-09-12 20:16:41 -06:00
Michael Miller
e304224bd6 Move stack handling to its own type 2019-09-08 09:59:25 -06:00
Michael Miller
f25eb9164f Some test creation rewrite 2019-09-08 09:58:15 -06:00
Michael Miller
1c5b46b981 Use fresh variables 2019-09-01 00:54:04 -06:00
Michael Miller
19913a28d1 Gut factories and example structure code 2019-08-31 13:12:40 -06:00
Michael Miller
bfe641e07e Move sample values to group instance
The goal is to construct examples with a parameterless initializer.
This doesn't quite work, since the sample values are retrieved via the
harness, which doesn't have an active example when the sample values are
created.
2019-08-30 14:46:24 -06:00
Michael Miller
4ecc2c6004 Include ExampleDSL at root
Will need to check if methods can run in that scope.
2019-08-30 13:14:48 -06:00
Michael Miller
64045171c2 Change contexts from modules to classes 2019-08-30 12:39:03 -06:00
Michael Miller
c36859b42b Correct docs 2019-08-17 08:10:26 -06:00
Michael Miller
7f58c52e43 Cleanup 2019-08-17 08:05:05 -06:00
Michael Miller
498635d288 Pass along a proc to generate the array
The "to_a" method is actually dynamically generated.
2019-08-17 08:00:16 -06:00
Michael Miller
43440d37b0 Explicit initializer with sample values
Not sure why it isn't getting the one from the module.
2019-08-17 07:59:32 -06:00
Michael Miller
a59e38155e Defer collection evaluation until build 2019-08-17 07:51:29 -06:00
Michael Miller
34b5487e6f Pass along class type instead of collection 2019-08-15 17:38:54 -06:00
Michael Miller
01c4b78716 Move placeholder initializer up a level 2019-08-15 16:43:25 -06:00
Michael Miller
0cb77b3355 Add all-matcher to DSL 2019-08-12 14:07:13 -06:00
Michael Miller
848f80ddf8 Add block short-hand syntax support to change matcher 2019-08-11 13:16:40 -06:00
Michael Miller
2666f80653 Hackish fix for block short-hand syntax
Dunno when this broke or how it ever worked. 😐
2019-08-11 13:16:18 -06:00
Michael Miller
27436b4e09 Need to use fresh variables in this macro 2019-08-11 12:55:38 -06:00
Michael Miller
1d205b6ee9 Put test expression on its own line 2019-08-10 12:49:54 -06:00
Michael Miller
214b2e171e Refactor existing change matchers to use new format 2019-08-10 12:42:57 -06:00
Michael Miller
3e1ee7eb6d Initial code for basic change matcher 2019-08-10 11:21:14 -06:00
Michael Miller
85b7412436 Fix some more matcher errors 2019-08-09 15:14:00 -06:00
Michael Miller
751c15434b Help infer the block's return type 2019-08-09 11:29:53 -06:00
Michael Miller
eef7e9ce3c Wrap expression and label in TestValue 2019-08-08 17:15:13 -06:00
Michael Miller
4665d5f68d Fix inconsistent naming for test expressions 2019-08-08 17:08:38 -06:00
Michael Miller
f004912fc1 Value first, then label 2019-08-01 15:48:39 -06:00
Michael Miller
7e3b3cd999 Fix namespaces 2019-08-01 15:44:04 -06:00
Michael Miller
763a65beac Rename again
This naming is more appropriate since these types can be used for
expected and actual values.
2019-08-01 15:38:20 -06:00
Michael Miller
dd69cec536 Should capture a block instead of a value 2019-08-01 15:22:45 -06:00
Michael Miller
28680fa849 Rename Actual types to be more "human" sounding 2019-08-01 15:22:18 -06:00
Michael Miller
79a095bb31 Use new style expectations and actuals in DSL 2019-08-01 15:00:56 -06:00
Michael Miller
c7e6b82a9a Change wording around let variant
The value is set when the expression is run at program startup, not when
the test starts.
2019-07-19 23:10:22 +00:00
Michael Miller
98476057f5 Implement assignment variant of let keyword
Resolves #18
2019-07-19 16:44:00 -06:00
Michael Miller
efde29c90e Add have_size_of matcher 2019-06-09 12:45:49 -06:00
Michael Miller
bb2b834662 Add have_size matcher 2019-06-09 12:44:46 -06:00
Michael Miller
091cbaa81a Cleanup have_ variant by using a new matcher 2019-06-01 23:27:16 -06:00
Michael Miller
16bcce59ae Handle have_ prefix for matcher 2019-06-01 23:14:58 -06:00
Michael Miller
45f0f7f6d1 Include predicate arguments in label 2019-06-01 23:06:39 -06:00
Michael Miller
7e73ec2fe1 Allow passing arguments to predicate matcher 2019-06-01 22:46:06 -06:00
Michael Miller
ca564619ad Change example wrapper type to a class
Fixes issue #11.
Variables (defined with let) were getting re-created between the hooks 
and the example code.
This was due to a separate struct value being returned for each fetch to 
the wrapped example instance.
In turn, the wrappers for variables were reset for each fetch.
2019-06-01 20:10:08 -06:00
Michael Miller
01b5d71ad0 Fixed an issue where named subjects could crash the compiler
Received:

Nil assertion failed (NilAssertionError)
  from ???
  ...
Error: you've found a bug in the Crystal compiler. ...

for this code:

subject(point) { Point.new }
describe "#x" do
  subject { point.x }
end

Redefining subjects with a named subject broke.
This commit fixes that with a simply flip in the definitions.
2019-05-21 13:44:19 -06:00
Michael Miller
77307f6eb1 Split part of RangeMatcher off as CollectionMatcher
Use CollectionMatcher for `be_within`.
The `#of` method creates a RangeMatcher.
2019-05-16 18:20:08 -06:00
Michael Miller
fa5c13df0e Remove min-max variation of be_within
Use `be_between(min, max)` instead.
This matches RSpec.
2019-05-16 18:09:21 -06:00
Michael Miller
0fc28241dd Add be_between matcher which is an alias of be_within 2019-05-14 21:50:09 -06:00
Michael Miller
2378594c5d Use reference matching for be() 2019-05-08 16:59:59 -06:00
Michael Miller
7168b26218 Remove regex matcher - use case matcher 2019-05-08 16:39:00 -06:00
Michael Miller
6d81e26298 Fix for issue #4 2019-05-08 15:22:32 -06:00
Michael Miller
29df8716de Fixes and tweaks for Crystal 0.28
Bump version to 0.5.1
2019-04-18 19:32:24 -06:00