package com.kuxhausen.huemore; import android.support.test.runner.AndroidJUnit4; import com.kuxhausen.huemore.state.BulbState; import com.kuxhausen.huemore.state.Event; import com.kuxhausen.huemore.state.Mood; import org.junit.Test; import org.junit.runner.RunWith; import java.util.Arrays; import static junit.framework.TestCase.assertFalse; import static junit.framework.TestCase.assertTrue; import static org.junit.Assert.assertEquals; @RunWith(AndroidJUnit4.class) public class MoodTest { @Test public void testConstructor_default() { Mood m = new Mood.Builder().setEvents(new Event[]{new Event(null, 0, 0)}).build(); assertEquals(Mood.TimingPolicy.BASIC, m.getTimingPolicy()); assertTrue(m.isSimple()); assertEquals(1, m.getNumChannels()); assertEquals(0, m.getNumTimeslots()); assertEquals(0, m.getEventStatesAsSparseMatrix().length); } @Test public void testConstructor_bulbState() { BulbState bs = new BulbState(); bs.setOn(true); Mood m = new Mood.Builder(bs).build(); assertEquals(Mood.TimingPolicy.BASIC, m.getTimingPolicy()); assertTrue(m.isSimple()); assertEquals(1, m.getNumChannels()); assertEquals(1, m.getNumTimeslots()); assertTrue(Arrays.equals(new Event[]{new Event(bs, 0, 0l)}, m.getEvents())); } @Test public void testEquals() { BulbState bs1 = new BulbState(); bs1.setOn(true); BulbState bs2 = new BulbState(); bs2.setOn(true); Event e1 = new Event(bs1, 0, 0); Event e2 = new Event(bs1, 1, 0); Event e3 = new Event(bs1, 0, 100l); Event e4 = new Event(bs2, 0, 0); Mood m1 = new Mood.Builder() .setLoopMilliTime(500l) .setTimingPolicy(Mood.TimingPolicy.BASIC) .setNumChannels(2) .setEvents(new Event[]{e1, e2, e3}) .build(); assertTrue(m1.equals(m1)); Mood m2 = new Mood.Builder() .setLoopMilliTime(500l) .setTimingPolicy(Mood.TimingPolicy.BASIC) .setNumChannels(2) .setEvents(new Event[]{e1, e2, e3}) .build(); assertFalse(m1.equals(m2)); Mood m3 = new Mood.Builder() .setLoopMilliTime(500l) .setTimingPolicy(Mood.TimingPolicy.BASIC) .setNumChannels(2) .setEvents(new Event[]{e1, e2, e3}) .build(); assertFalse(m1.equals(m3)); Mood m4 = new Mood.Builder() .setLoopMilliTime(500l) .setTimingPolicy(Mood.TimingPolicy.BASIC) .setNumChannels(3) .setEvents(new Event[]{e1, e2, e3}) .build(); assertFalse(m1.equals(m4)); Mood m5 = new Mood.Builder() .setLoopMilliTime(2300l) .setTimingPolicy(Mood.TimingPolicy.BASIC) .setNumChannels(2) .setEvents(new Event[]{e1, e2, e3}) .build(); assertFalse(m1.equals(m5)); Mood m6 = new Mood.Builder() .setLoopMilliTime(500l) .setTimingPolicy(Mood.TimingPolicy.BASIC) .setNumChannels(2) .setEvents(new Event[]{e1, e2}) .build(); assertFalse(m1.equals(m6)); Mood m7 = new Mood.Builder() .setLoopMilliTime(500l) .setTimingPolicy(Mood.TimingPolicy.BASIC) .setNumChannels(2) .setEvents(new Event[]{e4, e2, e3}) .build(); assertTrue(m1.equals(m7)); } /* * Tests the Off mood */ @Test public void functionality1() { BulbState bs1 = new BulbState(); bs1.setOn(false); Event e1 = new Event(bs1, 0, 0); Mood m = new Mood.Builder() .setEvents(new Event[]{e1}) .build(); assertEquals(Mood.TimingPolicy.BASIC, m.getTimingPolicy()); assertTrue(m.isSimple()); assertEquals(1, m.getNumChannels()); assertEquals(1, m.getNumTimeslots()); assertEquals(1, m.getEventStatesAsSparseMatrix().length); assertEquals(1, m.getEventStatesAsSparseMatrix()[0].length); } /* * Tests the Deep Sea mood */ @Test public void functionality2() { BulbState bs1 = new BulbState(); bs1.setXY(new float[]{.3f, .4f}); BulbState bs2 = new BulbState(); bs2.setXY(new float[]{.1f, .6f}); Event e1 = new Event(bs1, 0, 0); Event e2 = new Event(bs2, 1, 0); Event e3 = new Event(bs1, 2, 0); Mood m = new Mood.Builder() .setEvents(new Event[]{e1, e2, e3}) .build(); assertEquals(Mood.TimingPolicy.BASIC, m.getTimingPolicy()); assertTrue(m.isSimple()); assertEquals(3, m.getNumChannels()); assertEquals(1, m.getNumTimeslots()); assertEquals(1, m.getEventStatesAsSparseMatrix().length); assertEquals(3, m.getEventStatesAsSparseMatrix()[0].length); } /* * Tests a sunset mood */ @Test public void functionality3() { BulbState bs1 = new BulbState(); bs1.setMiredCT(333); BulbState bs2 = new BulbState(); bs2.setOn(false); Event e1 = new Event(bs1, 1, 0); Event e2 = new Event(bs2, 1, 5000l); Mood m = new Mood.Builder() .setEvents(new Event[]{e1, e2}) .setNumChannels(2) .build(); assertEquals(Mood.TimingPolicy.BASIC, m.getTimingPolicy()); assertFalse(m.isSimple()); assertEquals(2, m.getNumChannels()); assertEquals(2, m.getNumTimeslots()); assertEquals(2, m.getEventStatesAsSparseMatrix().length); assertEquals(1, m.getEventStatesAsSparseMatrix()[0].length); } /* * Tests a cycling mood */ @Test public void functionality4() { BulbState bs1 = new BulbState(); bs1.setMiredCT(333); BulbState bs2 = new BulbState(); bs2.setMiredCT(200); Event e1 = new Event(bs1, 1, 0); Event e2 = new Event(bs2, 1, 1000l); Mood m = new Mood.Builder() .setEvents(new Event[]{e1, e2}) .setNumChannels(2) .setTimingPolicy(Mood.TimingPolicy.LOOPING) .setLoopMilliTime(2000l) .build(); assertEquals(Mood.TimingPolicy.LOOPING, m.getTimingPolicy()); assertFalse(m.isSimple()); assertEquals(2, m.getNumChannels()); assertEquals(2, m.getNumTimeslots()); assertEquals(2, m.getEventStatesAsSparseMatrix().length); assertEquals(1, m.getEventStatesAsSparseMatrix()[0].length); } /* * Tests a daily mood */ @Test public void functionality5() { BulbState bs1 = new BulbState(); bs1.setMiredCT(333); BulbState bs2 = new BulbState(); bs2.setMiredCT(200); Event e1 = new Event(bs1, 0, 123456l); Event e2 = new Event(bs2, 0, 2468024l); Mood m = new Mood.Builder() .setEvents(new Event[]{e1, e2}) .setNumChannels(2) .setTimingPolicy(Mood.TimingPolicy.DAILY) .build(); assertEquals(Mood.TimingPolicy.DAILY, m.getTimingPolicy()); assertFalse(m.isSimple()); assertEquals(1, m.getNumChannels()); assertEquals(2, m.getNumTimeslots()); assertEquals(2, m.getEventStatesAsSparseMatrix().length); assertEquals(1, m.getEventStatesAsSparseMatrix()[0].length); } }