### Question:
DataManagerTrainingListener implements TrainingListener { @Override public ListenerResponse onEpochTrainingResult(IEpochTrainer trainer, IDataManager.StatEntry statEntry) { IHistoryProcessor hp = trainer.getHistoryProcessor(); if(hp != null) { hp.stopMonitor(); } try { dataManager.appendStat(statEntry); } catch (Exception e) { log.error("Training failed.", e); return ListenerResponse.STOP; } return ListenerResponse.CONTINUE; } DataManagerTrainingListener(IDataManager dataManager); @Override ListenerResponse onTrainingStart(); @Override void onTrainingEnd(); @Override ListenerResponse onNewEpoch(IEpochTrainer trainer); @Override ListenerResponse onEpochTrainingResult(IEpochTrainer trainer, IDataManager.StatEntry statEntry); @Override ListenerResponse onTrainingProgress(ILearning learning);  }### Answer:
@Test public void when_callingOnEpochTrainingResultWithoutHistoryProcessor_expect_noException() { TestTrainer trainer = new TestTrainer(); DataManagerTrainingListener sut = new DataManagerTrainingListener(new MockDataManager(false)); TrainingListener.ListenerResponse response = sut.onEpochTrainingResult(trainer, null); assertEquals(TrainingListener.ListenerResponse.CONTINUE, response); }
@Test public void when_callingOnNewEpochWithHistoryProcessor_expect_stopMonitorNotCalled() { TestTrainer trainer = new TestTrainer(); IHistoryProcessor.Configuration hpConf = new IHistoryProcessor.Configuration(5, 4, 4, 4, 4, 0, 0, 2); MockHistoryProcessor hp = new MockHistoryProcessor(hpConf); trainer.setHistoryProcessor(hp); DataManagerTrainingListener sut = new DataManagerTrainingListener(new MockDataManager(false)); TrainingListener.ListenerResponse response = sut.onEpochTrainingResult(trainer, null); assertEquals(1, hp.stopMonitorCallCount); assertEquals(TrainingListener.ListenerResponse.CONTINUE, response); }
@Test public void when_callingOnEpochTrainingResult_expect_callToDataManagerAppendStat() { TestTrainer trainer = new TestTrainer(); MockDataManager dm = new MockDataManager(false); DataManagerTrainingListener sut = new DataManagerTrainingListener(dm); MockStatEntry statEntry = new MockStatEntry(0, 0, 0.0); TrainingListener.ListenerResponse response = sut.onEpochTrainingResult(trainer, statEntry); assertEquals(TrainingListener.ListenerResponse.CONTINUE, response); assertEquals(1, dm.statEntries.size()); assertSame(statEntry, dm.statEntries.get(0)); }