package com.insightfullogic.java8.examples.chapter8.command; import org.junit.Test; public class MacrosTest { @Test public void classBasedCommand() { MockEditor editor = new MockEditor(); // BEGIN classBasedCommand Macro macro = new Macro(); macro.record(new Open(editor)); macro.record(new Save(editor)); macro.record(new Close(editor)); macro.run(); // END classBasedCommand editor.check(); } @Test public void lambdaBasedCommand() { MockEditor editor = new MockEditor(); // BEGIN lambdaBasedCommand Macro macro = new Macro(); macro.record(() -> editor.open()); macro.record(() -> editor.save()); macro.record(() -> editor.close()); macro.run(); // END lambdaBasedCommand editor.check(); } @Test public void referenceBasedCommand() { MockEditor editor = new MockEditor(); // BEGIN referenceBasedCommand Macro macro = new Macro(); macro.record(editor::open); macro.record(editor::save); macro.record(editor::close); macro.run(); // END referenceBasedCommand editor.check(); } }