@@ -19,7 +19,7 @@ const parseObservableMarble = <T>(
19
19
const frameOffset = subscriptionIndex < 0 ? 0 : subscriptionIndex ;
20
20
21
21
const values = Array . from ( marble ) . filter ( token => token !== ObservableMarbleToken . NOOP ) . slice ( frameOffset ) . reduce ( (
22
- acc : { currentOffset : number ; messages : Array < TestMessage < T > > } ,
22
+ acc : { currentOffset : number ; messages : Array < TestMessage < T > > ; simultaneousGrouped : boolean } ,
23
23
token : any
24
24
) => {
25
25
let message : TestMessage < T > | null = null ;
@@ -37,9 +37,11 @@ const parseObservableMarble = <T>(
37
37
case ObservableMarbleToken . TIMEFRAME_EXPAND :
38
38
break ;
39
39
case ObservableMarbleToken . SIMULTANEOUS_START :
40
- acc . currentOffset += 1 * frameTimeFactor ;
40
+ acc . simultaneousGrouped = true ;
41
41
break ;
42
42
case ObservableMarbleToken . SIMULTANEOUS_END :
43
+ acc . currentOffset += 1 * frameTimeFactor ;
44
+ acc . simultaneousGrouped = false ;
43
45
break ;
44
46
case SubscriptionMarbleToken . SUBSCRIBE :
45
47
break ;
@@ -50,13 +52,16 @@ const parseObservableMarble = <T>(
50
52
51
53
if ( ! ! message ) {
52
54
acc . messages . push ( message ) ;
53
- acc . currentOffset += 1 * frameTimeFactor ;
55
+ if ( ! acc . simultaneousGrouped ) {
56
+ acc . currentOffset += 1 * frameTimeFactor ;
57
+ }
54
58
}
55
59
56
60
return acc ;
57
61
} , {
58
62
currentOffset : frameOffset ,
59
- messages : [ ]
63
+ messages : [ ] ,
64
+ simultaneousGrouped : false
60
65
} ) ;
61
66
62
67
return values . messages ;
0 commit comments