Skip to content

Instantly share code, notes, and snippets.

@agutoli
Created September 13, 2019 01:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save agutoli/0d25284984dbf4bfa758f5804049d5dd to your computer and use it in GitHub Desktop.
Save agutoli/0d25284984dbf4bfa758f5804049d5dd to your computer and use it in GitHub Desktop.
Java Test Example
package au.com.mydomain.api;
import org.junit.runner.RunWith;
import com.mscharhag.oleaster.runner.OleasterRunner;
import static com.mscharhag.oleaster.runner.StaticRunnerSupport.*;
import static org.junit.Assert.assertEquals;
import au.com.mydomain.api.ExampleState.State;
import java.util.List;
import java.util.ArrayList;
// Mocks and utils
import au.com.mydomain.api.MyDomainTestUtils.StateFactory;
@RunWith(OleasterRunner.class)
public class IpadStateTest {
public static void runTests(State STATE) {
describe("is_LIVE_SLOT_compatible", () -> {
describe("NO", () -> {
describe("is_OTHER_SLOT_compatible", () -> {
describe("NO", () -> {
describe("is_there_a_PREFERRED_VERSION_compatible", () -> {
describe("NO", () -> {
it("returns __DOWNLOAD__([ latestCompatibleVersion ])", () -> {
List<Package> packages = new ArrayList<>();
packages.add(new Package("ios_v1.0.1", false));
packages.add(new Package("ios_v1.0.3", false));
packages.add(new Package("ios_v1.0.4", false));
packages.add(new Package("ios_v1.0.6", false));
packages.add(new Package("ios_v1.0.5", false));
packages.add(new Package("ios_v1.0.2", false));
ExampleState kstate = new StateFactory(STATE)
.setPackages(packages)
.setLiveSlot(0)
.setLaunchSlot(0)
.setLiveVersion("ios_v0.0.1")// not compatible
.setSlot0Version("ios_v0.0.1")// not compatible
.setSlot1Version("ios_v0.0.1")// not compatible
.setIpadBinaryVersion("1.0.1")
.build();
assertEquals( STATE, kstate.getState() );
assertEquals( ExampleAction.install(1), kstate.getAction() );
assertEquals( kstate.getStandbyVersion(), "ios_v1.0.6" );
});
});
describe("YES", () -> {
it("returns __DOWNLOAD__([ preferredVersion ])", () -> {
List<Package> packages = new ArrayList<>();
packages.add(new Package("ios_v1.0.1", false));
packages.add(new Package("ios_v1.0.2", true)); // should get this one PREFERRED
packages.add(new Package("ios_v1.0.3", false));
ExampleState kstate = new StateFactory(STATE)
.setPackages(packages)
.setLiveSlot(1)
.setLaunchSlot(1)
.setLiveVersion("ios_v0.0.1")
.setSlot0Version("ios_v0.0.1")
.setSlot1Version("ios_v0.0.1")
.setIpadBinaryVersion("1.0.1")
.build();
assertEquals( STATE, kstate.getState() );
assertEquals( ExampleAction.install(0), kstate.getAction() );
assertEquals( kstate.getStandbyVersion(), "ios_v1.0.2" );
});
});
});
});
describe("YES", () -> {
it("returns __SWITCHTO__([ otherSlot ])", () -> {
ExampleState kstate = new StateFactory(STATE)
.setLiveSlot(1)
.setLaunchSlot(1)
.setSlot0Version("ios_v1.0.2")// IS COMPATIBLE
.setSlot1Version("ios_v_not_compatible")
.setIpadBinaryVersion("1.0.1")
.build();
assertEquals( STATE, kstate.getState() );
assertEquals( ExampleAction.switchTo(0), kstate.getAction() );
});
});
});
});
describe("YES", () -> {
describe("is_LIVE_SLOT_preferred_version_or_later", () -> {
describe("YES", () -> {
it("returns __NOTHING__", () -> {
List<Package> packages = new ArrayList<>();
packages.add(new Package("ios_v1.0.1", true));
packages.add(new Package("ios_v1.0.2", false));
ExampleState kstate = new StateFactory(STATE)
.setPackages(packages)
.setLiveSlot(0)
.setLiveVersion("ios_v1.0.2")
.setSlot0Version("ios_v1.0.2")
.setIpadBinaryVersion("1.0.1")
.build();
assertEquals( STATE, kstate.getState() );
assertEquals( ExampleAction.nothing(), kstate.getAction() );
});
});
describe("NO", () -> {
describe("is_OTHER_SLOT_preferred_version", () -> {
describe("NO", () -> {
it("returns __DOWNLOAD__([ preferredVersion ])", () -> {
List<Package> packages = new ArrayList<>();
packages.add(new Package("ios_v1.0.5", true));
packages.add(new Package("ios_v1.0.2", false));
ExampleState kstate = new StateFactory(STATE)
.setPackages(packages)
.setLiveSlot(0)
.setLaunchSlot(0)
.setLiveVersion("ios_v1.0.2")
.setSlot0Version("ios_v1.0.2")
.setSlot1Version("ios_v1.0.2")
.setIpadBinaryVersion("1.0.1")
.build();
assertEquals( STATE, kstate.getState() );
assertEquals( ExampleAction.install(1), kstate.getAction() );
assertEquals( kstate.getStandbyVersion(), "ios_v1.0.5" );
});
});
describe("YES", () -> {
it("returns __SWITCHTO__([ otherSlot ])", () -> {
List<Package> packages = new ArrayList<>();
packages.add(new Package("ios_v1.0.5", true));
packages.add(new Package("ios_v1.0.2", false));
ExampleState kstate = new StateFactory(STATE)
.setPackages(packages)
.setLiveSlot(0)
.setLaunchSlot(0)
.setLiveVersion("ios_v1.0.2")
.setSlot0Version("ios_v1.0.2")
.setSlot1Version("ios_v1.0.5")// PREFERRED VERSION
.setIpadBinaryVersion("1.0.1")
.build();
assertEquals( STATE, kstate.getState() );
assertEquals( ExampleAction.switchTo(1), kstate.getAction() );
});
});
});
});
});
});
});
}
{
describe("When READY:", () -> {
runTests(State.READY);
});
describe("When ERROR:", () -> {
runTests(State.ERROR);
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment