public void TestAudio() throws InterruptedException { // A couple of test cases ArrayList<Audio> TestCases = new ArrayList<Audio>(); TestCases.add(new Audio(15001000L, "mw. Vries, de", new Date())); TestCases.add(new Audio(25001000L, "mr. Jansen", new Date())); TestCases.add(new Audio(45001000L, "mw. Boer, de", new Date())); TestCases.add(new Audio(537455715325L, "mw. Vries, de", new Date())); TestCases.add(new Audio(637294365821L, "mr. Jansen", new Date())); TestCases.add(new Audio(924391239584L, "mw. Boer, de", new Date())); // Pipe testing // Create the pipes that transport data between the filters Pipe<Audio> audioInputPipe = new Pipe<>(); Pipe<ElderFrequency> freqAnalyzerPipe = new Pipe<>(); Pipe<ElderMood> moodAnalyzerPipe = new Pipe<>(); // Create the filters Filter<Audio, ElderFrequency> audioAnalyzer = new AudioFilter(audioInputPipe, freqAnalyzerPipe); Filter<ElderFrequency, ElderMood> moodAnalyzer = new FreqFilter(freqAnalyzerPipe, moodAnalyzerPipe); MoodSink moodSink = new MoodSink(moodAnalyzerPipe); // Start the filters audioAnalyzer.start(); moodAnalyzer.start(); moodSink.start(); // Run the test cases for (Audio testCase : TestCases) { audioInputPipe.put(testCase); Thread.sleep(100); } // Wait for the threads to finish Thread.sleep(400); // Stop the filters audioAnalyzer.stop(); moodAnalyzer.stop(); moodSink.stop(); // Output String list List<String> output = moodSink.getElderlyMoods().getData(); // Assert it works ArrayList<String> TestSolutions = new ArrayList<String>(); TestSolutions.add( TestCases.get(0).getDate() + " | " + TestCases.get(0).getPerson() + " | " + Mood.Angry); TestSolutions.add( TestCases.get(1).getDate() + " | " + TestCases.get(1).getPerson() + " | " + Mood.Angry); TestSolutions.add( TestCases.get(2).getDate() + " | " + TestCases.get(2).getPerson() + " | " + Mood.Sad); TestSolutions.add( TestCases.get(3).getDate() + " | " + TestCases.get(3).getPerson() + " | " + Mood.Happy); TestSolutions.add( TestCases.get(4).getDate() + " | " + TestCases.get(4).getPerson() + " | " + Mood.Scared); TestSolutions.add( TestCases.get(5).getDate() + " | " + TestCases.get(5).getPerson() + " | " + Mood.Lonely); for (int i = 0; i < output.size(); i++) { assertTrue(TestSolutions.get(i).equals(output.get(i))); } }