package com.vaguehope.onosendai.update;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;

import android.content.Context;

@RunWith(MockitoJUnitRunner.class)
public class BatteryNotifyTest {

	@Mock private Context context;
	@Rule public TemporaryFolder tmp = new TemporaryFolder();

	@Before
	public void before () throws Exception {
		when(this.context.getCacheDir()).thenReturn(this.tmp.getRoot());
	}

	@Test
	public void itMarksOverride () throws Exception {
		assertFalse(BatteryNotify.isOverrideEnabled(this.context));
		assertFalse(BatteryNotify.isOverrideEnabled(this.context));
		verify(this.context, times(1)).getCacheDir();

		BatteryNotify.enableOverride(this.context);
		verify(this.context, times(2)).getCacheDir();

		assertTrue(BatteryNotify.isOverrideEnabled(this.context));
		assertTrue(BatteryNotify.isOverrideEnabled(this.context));
		verify(this.context, times(3)).getCacheDir();
	}

	@Test
	public void itMarksAndResetsNotification () throws Exception {
		assertTrue(BatteryNotify.shouldNotifyNotUpdating(this.context));
		assertFalse(BatteryNotify.shouldNotifyNotUpdating(this.context));
		assertFalse(BatteryNotify.shouldNotifyNotUpdating(this.context));
		verify(this.context, times(1)).getCacheDir();

		BatteryNotify.clearNotUpdating(this.context);
		verify(this.context, times(2)).getCacheDir();

		assertTrue(BatteryNotify.shouldNotifyNotUpdating(this.context));
		assertFalse(BatteryNotify.shouldNotifyNotUpdating(this.context));
		assertFalse(BatteryNotify.shouldNotifyNotUpdating(this.context));
		verify(this.context, times(3)).getCacheDir();
	}

}

package com.vaguehope.onosendai.update;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;

import android.content.Context;

@RunWith(RobolectricTestRunner.class)
public class BatteryNotifyTest {

	@Mock private Context context;
	@Rule public TemporaryFolder tmp = new TemporaryFolder();

	@Before
	public void before () throws Exception {
		MockitoAnnotations.initMocks(this);
		when(this.context.getCacheDir()).thenReturn(this.tmp.getRoot());
	}

	@Test
	public void itMarksOverride () throws Exception {
		assertFalse(BatteryNotify.isOverrideEnabled(this.context));
		assertFalse(BatteryNotify.isOverrideEnabled(this.context));
		verify(this.context, times(1)).getCacheDir();

		BatteryNotify.enableOverride(this.context);
		verify(this.context, times(2)).getCacheDir();

		assertTrue(BatteryNotify.isOverrideEnabled(this.context));
		assertTrue(BatteryNotify.isOverrideEnabled(this.context));
		verify(this.context, times(3)).getCacheDir();
	}

	@Test
	public void itMarksAndResetsNotification () throws Exception {
		assertTrue(BatteryNotify.shouldNotifyNotUpdating(this.context));
		assertFalse(BatteryNotify.shouldNotifyNotUpdating(this.context));
		assertFalse(BatteryNotify.shouldNotifyNotUpdating(this.context));
		verify(this.context, times(1)).getCacheDir();

		BatteryNotify.clearNotUpdating(this.context);
		verify(this.context, times(2)).getCacheDir();

		assertTrue(BatteryNotify.shouldNotifyNotUpdating(this.context));
		assertFalse(BatteryNotify.shouldNotifyNotUpdating(this.context));
		assertFalse(BatteryNotify.shouldNotifyNotUpdating(this.context));
		verify(this.context, times(3)).getCacheDir();
	}

}

Fix UnsatisfiedLinkError in BatteryNotifyTest.