candoumbe/DataFilters

[BUG] ๐Ÿž `GroupExpression` does not work as expected

Closed this issue ยท 2 comments

Usage Information

Package version : 0.8.0

Relevant Code / Invocations

string input = "(02:53:39.987|1901-06-17T09:13:44.17Z)";
TokenList<FilterToken> tokens = FilterTokenizer.Parse(input);
GroupExpression actual = FilterTokenParser.Group.Parse(tokens);

GroupExpression expected = new (new OrExpression(new TimeExpression(hours: 2, minutes: 53, seconds: 39, milliseconds: 987),
                                                                                      new DateTimeExpression(new DateExpression(years: 1901, months: 06, days: 17),
                                                                                                                               new TimeExpression(hours: 9, minutes: 13, seconds: 44, milliseconds: 17),
                                                                                                                               OffsetTimeExpression.Zero)))


actual.Equals(expected)

Expected Behavior

What did you expect to happen?
actual.Equals(expected) should be true but got false

GroupExpression expected = new (new DateTimeExpression(new (2090, 10, 10), new (3, 0, 40, 583), OffsetExpression.Zero)); // (2090-10-10T03:00:40.583Z)
FilterTokenizer tokenizer = new ();
TokenList<FilterToken> tokens = tokenizer.Tokenize(input);

GroupExpression actual = FilterTokenParser.Group.Parse(tokens);

actual.Equals(expected) // <- false

Expected behaviour

Expected actual.Equals(expected) to be true but found false

Stack Trace

Error: [xUnit.net 00:00:13.98]     Should parse Groups [FAIL]
    Failed Should parse Groups [607 ms]
    Error Message:
     FsCheck.Xunit.PropertyFailedException : 
  Falsifiable, after 5 tests (0 shrinks) (6157201148448015481,9038077659937908233)
  Last step was invoked with size of 6 and seed of (17275301200685211177,15089738645152992795):
  Original:
  {GroupExpression [Expression = DateTimeExpression, EscapedParseableString = '2090-10-10T03:00:40.583Z', OriginalString = '2090-10-10T03:00:40.583Z'], EscapedParseableString='(2090-10-10T03:00:40.583Z)'}
  
  ---- Expected actual to be {GroupExpression [Expression = DateTimeExpression, EscapedParseableString = '2090-10-10T03:00:40.583Z', OriginalString = '2090-10-10T03:00:40.583Z'], EscapedParseableString='(2090-10-10T03:00:40.583Z)'}, but found {GroupExpression [Expression = DateTimeExpression, EscapedParseableString = '2090-10-10T03:00:40.583Z', OriginalString = '2090-10-10T03:00:40.583Z'], EscapedParseableString='(2090-10-10T03:00:40.583Z)'}.
    Stack Trace:
    
  ----- Inner Stack Trace -----
     at FluentAssertions.Execution.XUnit2TestFramework.Throw(String message)
     at FluentAssertions.Execution.TestFrameworkProvider.Throw(String message)
     at FluentAssertions.Execution.DefaultAssertionStrategy.HandleFailure(String message)
     at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
     at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
     at FluentAssertions.Execution.AssertionScope.FailWith(String message, Object[] args)
     at FluentAssertions.Primitives.ObjectAssertions.Be(Object expected, String because, Object[] becauseArgs)
     at DataFilters.UnitTests.Grammar.Parsing.FilterTokenParserTests.AssertThatShould_parse(FilterExpression actual, FilterExpression expected, String reason) in D:\a\DataFilters\DataFilters\test\DataFilters.UnitTests\Grammar\Parsing\FilterTokenParserTests.cs:line 989
     at DataFilters.UnitTests.Grammar.Parsing.FilterTokenParserTests.Should_parse_Groups(GroupExpression expected) in D:\a\DataFilters\DataFilters\test\DataFilters.UnitTests\Grammar\Parsing\FilterTokenParserTests.cs:line 958
  --- End of stack trace from previous location where exception was thrown ---
     at FsCheck.Runner.invokeAndThrowInner@590-1.Invoke(Object[] o) in C:\Users\kurts\Projects\FsCheck\src\FsCheck\Runner.fs:line 594
     at <StartupCode$FSharp-Core>.$Reflect.Invoke@814-4.Invoke(T1 inp)
     at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
     at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
     at System.Lazy`1.CreateValue()
     at System.Lazy`1.get_Value()
     at FsCheck.Testable.Prop.safeForce[a](Lazy`1 body) in C:\Users\kurts\Projects\FsCheck\src\FsCheck\Testable.fs:line 145
    Standard Output Messages:
   input : '(17:44:40.958)'
   input : '(P1Y2M1W1DT2H1M2S)'
   input : '(*"\x03r"*)'
   input : '(2082-03-08T09:51:29.511-05:34)'
   input : '(2090-10-10T03:00:40.583Z)'

Additional information

Issue found when running CI build https://github.com/candoumbe/DataFilters/runs/3914170238

Fixed by fe4e69b