69 import org.testng.annotations.AfterMethod; |
69 import org.testng.annotations.AfterMethod; |
70 import org.testng.annotations.BeforeMethod; |
70 import org.testng.annotations.BeforeMethod; |
71 |
71 |
72 import jdk.jshell.Diag; |
72 import jdk.jshell.Diag; |
73 import static java.util.stream.Collectors.toList; |
73 import static java.util.stream.Collectors.toList; |
|
74 import static java.util.stream.Collectors.toSet; |
74 import static jdk.jshell.Snippet.Status.*; |
75 import static jdk.jshell.Snippet.Status.*; |
75 import static org.testng.Assert.*; |
76 import static org.testng.Assert.*; |
76 import static jdk.jshell.Snippet.SubKind.METHOD_SUBKIND; |
77 import static jdk.jshell.Snippet.SubKind.METHOD_SUBKIND; |
77 |
78 |
78 public class KullaTesting { |
79 public class KullaTesting { |
356 public List<SnippetEvent> assertEval(String input, |
357 public List<SnippetEvent> assertEval(String input, |
357 DiagCheck diagMain, DiagCheck diagUpdates, EventChain... eventChains) { |
358 DiagCheck diagMain, DiagCheck diagUpdates, EventChain... eventChains) { |
358 return checkEvents(() -> getState().eval(input), "eval(" + input + ")", diagMain, diagUpdates, eventChains); |
359 return checkEvents(() -> getState().eval(input), "eval(" + input + ")", diagMain, diagUpdates, eventChains); |
359 } |
360 } |
360 |
361 |
|
362 <T> void assertStreamMatch(Stream<T> result, T... expected) { |
|
363 Set<T> sns = result.collect(toSet()); |
|
364 Set<T> exp = Stream.of(expected).collect(toSet()); |
|
365 assertEquals(sns, exp); |
|
366 } |
|
367 |
361 private Map<Snippet, Snippet> closure(List<SnippetEvent> events) { |
368 private Map<Snippet, Snippet> closure(List<SnippetEvent> events) { |
362 Map<Snippet, Snippet> transitions = new HashMap<>(); |
369 Map<Snippet, Snippet> transitions = new HashMap<>(); |
363 for (SnippetEvent event : events) { |
370 for (SnippetEvent event : events) { |
364 transitions.put(event.snippet(), event.causeSnippet()); |
371 transitions.put(event.snippet(), event.causeSnippet()); |
365 } |
372 } |