public void PatternMatchTest() { string tempFilename = Path.GetTempFileName(); const ulong itself = Links.Itself; const ulong one = Sequences.Any; const ulong zeroOrMany = Sequences.ZeroOrMany; using (var links = new Links(tempFilename, LinksSizeStep)) { var e1 = links.Create(itself, itself); var e2 = links.Create(itself, itself); var sequence = new[] { e1, e2, e1, e2 // mama / papa }; var sequences = new Sequences(links); var balancedVariant = sequences.CreateBalancedVariant(sequence); // 1: [1] // 2: [2] // 3: [1,2] // 4: [1,2,1,2] var pair = links.GetSource(balancedVariant); var matchedSequences1 = sequences.MatchPattern(e2, e1, zeroOrMany); Assert.IsTrue(matchedSequences1.Count == 0); var matchedSequences2 = sequences.MatchPattern(zeroOrMany, e2, e1); Assert.IsTrue(matchedSequences2.Count == 0); var matchedSequences3 = sequences.MatchPattern(e1, zeroOrMany, e1); Assert.IsTrue(matchedSequences3.Count == 0); var matchedSequences4 = sequences.MatchPattern(e1, zeroOrMany, e2); Assert.IsTrue(matchedSequences4.Contains(pair)); Assert.IsTrue(matchedSequences4.Contains(balancedVariant)); for (int i = 0; i < sequence.Length; i++) links.Delete(sequence[i]); } File.Delete(tempFilename); }