package com.michaelthomas.singleton; /** * @author Michael Thomas (www.michael-thomas.com) michael@michael-thomas.com * */ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Test; public class SingletonExampleTest { @Test public void testNormalExample() { NormalClass object1 = new NormalClass(); object1.setName("Hello"); NormalClass object2 = new NormalClass(); object2.setName("World"); assertFalse(object1 == object2); assertEquals("Hello", object1.getName()); assertEquals("World", object2.getName()); } @Test public void testSingletonTraditionalExample() { SingletonJVMTraditionalExample object1 = SingletonJVMTraditionalExample.getInstance(); object1.setName("Hello"); SingletonJVMTraditionalExample object2 = SingletonJVMTraditionalExample.getInstance(); object2.setName("World"); assertTrue(object1 == object2); assertEquals("World", object1.getName()); assertEquals("World", object2.getName()); } @Test public void testSingletonLazyExample() { SingletonLazyExample object1 = SingletonLazyExample.getInstance(); object1.setName("Hello"); SingletonLazyExample object2 = SingletonLazyExample.getInstance(); object2.setName("World"); assertTrue(object1 == object2); assertEquals("World", object1.getName()); assertEquals("World", object2.getName()); } @Test public void testSingletonInnerClassExample() { SingletonLazyInnerClassExample object1 = SingletonLazyInnerClassExample.getInstance(); object1.setName("Hello"); SingletonLazyInnerClassExample object2 = SingletonLazyInnerClassExample.getInstance(); object2.setName("World"); assertTrue(object1 == object2); assertEquals("World", object1.getName()); assertEquals("World", object2.getName()); } @Test public void testSingletonEnumExample() { SingletonJVMEnumExample object1 = SingletonJVMEnumExample.INSTANCE; object1.setName("Hello"); SingletonJVMEnumExample object2 = SingletonJVMEnumExample.INSTANCE; object2.setName("World"); assertTrue(object1 == object2); assertEquals("World", object1.getName()); assertEquals("World", object2.getName()); } }