package com.ms_square.debugoverlay; import android.app.Application; import android.graphics.Color; import com.ms_square.debugoverlay.modules.CpuUsageModule; import com.ms_square.debugoverlay.modules.FpsModule; import com.ms_square.debugoverlay.modules.LogcatLine; import com.ms_square.debugoverlay.modules.LogcatLineColorScheme; import com.ms_square.debugoverlay.modules.LogcatLineFilter; import com.ms_square.debugoverlay.modules.LogcatModule; import com.ms_square.debugoverlay.modules.MemInfoModule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; import static junit.framework.Assert.assertEquals; /** * Simply check calling public APIs do not result in error and they do absolutely nothing. */ @RunWith(MockitoJUnitRunner.class) public class DebugOverlayNoOpTest { @Mock Application mockApplication; @Mock ViewModule mockViewModule; @Mock DataModule mockDataModule; @Mock OverlayModule mockOverlayModule; @Test public void cpuModuleConstructors() { new CpuUsageModule(); new CpuUsageModule(0); new CpuUsageModule(0, 0); new CpuUsageModule(mockViewModule); new CpuUsageModule(0, mockViewModule); Mockito.verifyZeroInteractions(mockViewModule); } @Test public void fpsModuleConstructors() { new FpsModule(); new FpsModule(0); new FpsModule(0, 0); new FpsModule(mockViewModule); new FpsModule(0, mockViewModule); Mockito.verifyZeroInteractions(mockViewModule); } @Test public void logCatModuleConstructors() { LogcatLineFilter mockedFilter = Mockito.mock(LogcatLineFilter.class); LogcatLineColorScheme mockedColorScheme = Mockito.mock(LogcatLineColorScheme.class); new LogcatModule(); new LogcatModule(0); new LogcatModule(0, mockedFilter); new LogcatModule(0, mockedColorScheme); new LogcatModule(0, mockedFilter, mockedColorScheme); Mockito.verifyZeroInteractions(mockViewModule, mockedFilter, mockedColorScheme); } @Test public void memInfoModuleConstructors() { new MemInfoModule(mockApplication); new MemInfoModule(mockApplication, 0); new MemInfoModule(mockApplication, 0, 0); new MemInfoModule(mockApplication, mockViewModule); new MemInfoModule(mockApplication, 0, mockViewModule); Mockito.verifyZeroInteractions(mockApplication, mockViewModule); } @Test public void installSimple() throws Exception { DebugOverlay.with(mockApplication).install(); Mockito.verifyZeroInteractions(mockApplication); } @Test public void installModule() throws Exception { new DebugOverlay.Builder(mockApplication) .modules(mockOverlayModule) .build() .install(); Mockito.verifyZeroInteractions(mockApplication, mockOverlayModule); } @Test public void installCustomModule() throws Exception { new DebugOverlay.Builder(mockApplication) .modules(new OverlayModule(mockDataModule, mockViewModule){}) .build() .install(); Mockito.verifyZeroInteractions(mockApplication, mockDataModule, mockViewModule); } @Test public void installAppLayer() { new DebugOverlay.Builder(mockApplication) .allowSystemLayer(false) .modules(mockOverlayModule) .build() .install(); Mockito.verifyZeroInteractions(mockApplication, mockOverlayModule); } @Test public void installModulesWithPosition() { assertEquals(9, Position.values().length); new DebugOverlay.Builder(mockApplication) .modules(mockOverlayModule, new MemInfoModule(mockApplication), new FpsModule()) .position(Position.values()[0]) .build() .install(); Mockito.verifyZeroInteractions(mockApplication, mockOverlayModule); } @Test public void installWithNotification() { new DebugOverlay.Builder(mockApplication) .notification(false) .build() .install(); new DebugOverlay.Builder(mockApplication) .notification(true) .build() .install(); new DebugOverlay.Builder(mockApplication) .notification(true, "test") .build() .install(); Mockito.verifyZeroInteractions(mockApplication); } @Test public void installLogcatModuleWCustomColor() { new DebugOverlay.Builder(mockApplication) .modules(new LogcatModule(10, new LogcatLineColorScheme() { @Override public int getTextColor(LogcatLine.Priority priority, String tag) { return Color.CYAN; } })) .build(); Mockito.verifyZeroInteractions(mockApplication); } @Test public void installLogcatModuleWCustomFilter() { new DebugOverlay.Builder(mockApplication) .modules(new LogcatModule(10, new LogcatLineFilter.SimpleLogcatLineFilter(LogcatLine.Priority.INFO))) .build() .install(); new DebugOverlay.Builder(mockApplication) .modules(new LogcatModule(10, new LogcatLineFilter() { @Override public boolean shouldFilterOut(LogcatLine.Priority priority, String tag) { return false; } })) .build() .install(); Mockito.verifyZeroInteractions(mockApplication); } @Test public void installModulesCustomStyle() { new DebugOverlay.Builder(mockApplication) .modules(mockOverlayModule, new CpuUsageModule(), new MemInfoModule(mockApplication), new FpsModule()) .position(Position.TOP_START) .bgColor(0) .textColor(Color.MAGENTA) .textSize(14f) .textAlpha(.8f) .build() .install(); Mockito.verifyZeroInteractions(mockApplication, mockOverlayModule); } @Test public void logging() { DebugOverlay.with(mockApplication).install(); DebugOverlay.enableDebugLogging(false); Mockito.verifyZeroInteractions(mockApplication); DebugOverlay.enableDebugLogging(true); Mockito.verifyZeroInteractions(mockApplication); } }