package de.blau.android.util;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import android.support.design.widget.Snackbar;
import android.support.test.filters.LargeTest;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
import android.view.View;
import de.blau.android.Main;
/**
*
* @author simon
*
*/
@RunWith(AndroidJUnit4.class)
@LargeTest
public class SnackbarTest {
Main main = null;
View v = null;
@Rule
public ActivityTestRule<Main> mActivityRule = new ActivityTestRule<>(Main.class);
@Before
public void setup() {
main = mActivityRule.getActivity();
v = main.findViewById(android.R.id.content);
}
@Test
public void queue() {
Snackbar s1 = Snackbar.make(v, "Test1", Snackbar.LENGTH_LONG);
Snackbar s2 = Snackbar.make(v, "Test2", Snackbar.LENGTH_LONG);
Snackbar s3 = Snackbar.make(v, "Test3", Snackbar.LENGTH_LONG);
Snackbar s4 = Snackbar.make(v, "Test4", Snackbar.LENGTH_LONG);
Snack.enqueue(Snack.infoQueue, s1);
Snack.enqueue(Snack.infoQueue, s2);
Snack.enqueue(Snack.infoQueue, s3);
Assert.assertTrue(Snack.infoQueue.contains(s1));
Assert.assertTrue(Snack.infoQueue.contains(s2));
Assert.assertTrue(Snack.infoQueue.contains(s3));
Assert.assertEquals(3, Snack.QUEUE_CAPACITY); // just to be sure that our assumptions are true
Snack.enqueue(Snack.infoQueue, s4);
Assert.assertFalse(Snack.infoQueue.contains(s1));
Assert.assertTrue(Snack.infoQueue.contains(s2));
Assert.assertTrue(Snack.infoQueue.contains(s3));
Assert.assertTrue(Snack.infoQueue.contains(s4));
}
@Test
public void infoQueue() {
Snackbar s = Snackbar.make(v, "Test", Snackbar.LENGTH_LONG);
final CountDownLatch signal = new CountDownLatch(1);
s.setCallback(new Snackbar.Callback() {
@Override
public void onDismissed(Snackbar s, int event) {
}
@Override
public void onShown (Snackbar sb) {
signal.countDown();
}
});
Snack.enqueueInfo(s);
try {
signal.await(10, TimeUnit.SECONDS);
} catch (InterruptedException e) {
Assert.fail(e.getMessage());
}
}
@Test
public void warningQueue() {
Snackbar s = Snackbar.make(v, "Test", Snackbar.LENGTH_LONG);
final CountDownLatch signal = new CountDownLatch(1);
s.setCallback(new Snackbar.Callback() {
@Override
public void onDismissed(Snackbar s, int event) {
}
@Override
public void onShown (Snackbar sb) {
signal.countDown();
}
});
Snack.enqueueInfo(s);
try {
signal.await(10, TimeUnit.SECONDS);
} catch (InterruptedException e) {
Assert.fail(e.getMessage());
}
}
@Test
public void errorQueue() {
Snackbar s = Snackbar.make(v, "Test", Snackbar.LENGTH_LONG);
final CountDownLatch signal = new CountDownLatch(1);
s.setCallback(new Snackbar.Callback() {
@Override
public void onDismissed(Snackbar s, int event) {
}
@Override
public void onShown (Snackbar sb) {
signal.countDown();
}
});
Snack.enqueueInfo(s);
try {
signal.await(10, TimeUnit.SECONDS);
} catch (InterruptedException e) {
Assert.fail(e.getMessage());
}
}
}