/* * This file is part of DLect. DLect is a suite of code that facilitates the downloading of lecture recordings. * * Copyright © 2014 Lee Symes. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.dlect.internal.data; import java.util.Date; import org.dlect.object.UniversitySupport; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import static org.junit.Assert.*; import static org.mockito.Mockito.*; /** * * @author lee */ @RunWith(MockitoJUnitRunner.class) @SuppressWarnings("unchecked") public class UniversityDataTest { @Test public void testExamplar() throws Exception { Object o = mock(Object.class); assertNotNull(o); } @Test public void testConstructor_1argCode() { String code = "10L"; UniversityData data = new UniversityData(code); assertEquals(code, data.getCode()); } @Test public void testConstructor_5arg() { String code = "10L"; String name = "Hello"; UniversitySupport support = UniversitySupport.HTTPS; String url = "Not A URL"; long timeout = 788891243455678L; UniversityData data = new UniversityData(code, name, support, url, timeout); assertEquals(code, data.getCode()); assertEquals(name, data.getName()); assertEquals(support, data.getSupport()); assertEquals(url, data.getUrl()); assertEquals(timeout, data.getTimeoutLong()); assertFalse(data.getRetry()); } @Test public void testConstructor_4arg() { String code = "10L"; String name = "Hi"; UniversitySupport support = UniversitySupport.HTTP; String url = "No a URL"; UniversityData data = new UniversityData(code, name, support, url); assertEquals(code, data.getCode()); assertEquals(name, data.getName()); assertEquals(support, data.getSupport()); assertEquals(url, data.getUrl()); assertEquals(0L, data.getTimeoutLong()); assertFalse(data.getRetry()); } @Test public void testConstructor_3arg() { String code = "10L"; String name = "Hi"; UniversitySupport support = UniversitySupport.HTTP; UniversityData data = new UniversityData(code, name, support); assertEquals(code, data.getCode()); assertEquals(name, data.getName()); assertEquals(support, data.getSupport()); assertNull(data.getUrl()); assertEquals(0L, data.getTimeoutLong()); assertFalse(data.getRetry()); } @Test public void testConstructor_1argUData_NoRetry() { String code = "10L"; String name = "Hello"; UniversitySupport support = UniversitySupport.HTTPS; String url = "Not A URL"; Date timeout = new Date(788891243455678L); boolean retry = false; UniversityData old = mock(UniversityData.class); when(old.getCode()).thenReturn(code); when(old.getName()).thenReturn(name); when(old.getSupport()).thenReturn(support); when(old.getUrl()).thenReturn(url); when(old.getTimeout()).thenReturn(timeout); when(old.getRetry()).thenReturn(retry); UniversityData data = new UniversityData(old); assertEquals(code, data.getCode()); assertEquals(name, data.getName()); assertEquals(support, data.getSupport()); assertEquals(url, data.getUrl()); assertEquals(timeout, data.getTimeout()); assertEquals(retry, data.getRetry()); } @Test public void testConstructor_1argUData_Retry() { String code = "10L"; String name = "Hello"; UniversitySupport support = UniversitySupport.HTTPS; String url = "Not A URL"; Date timeout = new Date(788891243455678L); boolean retry = true; UniversityData old = mock(UniversityData.class); when(old.getCode()).thenReturn(code); when(old.getName()).thenReturn(name); when(old.getSupport()).thenReturn(support); when(old.getUrl()).thenReturn(url); when(old.getTimeout()).thenReturn(timeout); when(old.getRetry()).thenReturn(retry); UniversityData data = new UniversityData(old); assertEquals(code, data.getCode()); assertEquals(name, data.getName()); assertEquals(support, data.getSupport()); assertEquals(url, data.getUrl()); assertEquals(timeout, data.getTimeout()); assertEquals(retry, data.getRetry()); verify(old).getCode(); verify(old).getName(); verify(old).getSupport(); verify(old).getUrl(); verify(old).getTimeout(); verify(old).getRetry(); } @Test public void testGetSetCode() { UniversityData data = new UniversityData(); assertNull(data.getCode()); String code = "10L"; data.setCode(code); assertEquals(code, data.getCode()); code = "103445L"; data.setCode(code); assertEquals(code, data.getCode()); } @Test public void testGetSetName() { UniversityData data = new UniversityData(); assertNull(data.getName()); String name = "Name1"; data.setName(name); assertEquals(name, data.getName()); name = "Name2 - Longer :D"; data.setName(name); assertEquals(name, data.getName()); } @Test public void testGetSetSupport() { UniversityData data = new UniversityData(); assertNull(data.getSupport()); UniversitySupport support = UniversitySupport.HTTP; data.setSupport(support); assertEquals(support, data.getSupport()); support = UniversitySupport.HTTP_AUTH; data.setSupport(support); assertEquals(support, data.getSupport()); } @Test public void testGetSetUrl() { UniversityData data = new UniversityData(); assertNull(data.getUrl()); String url = "ASDGakjhfaksdjhfalksdfjha Hi"; data.setUrl(url); assertEquals(url, data.getUrl()); url = "SDGSDFSDFSFSDf"; data.setUrl(url); assertEquals(url, data.getUrl()); } @Test public void testGetSetTimeout_Long() { UniversityData data = new UniversityData(); assertEquals(0, data.getTimeoutLong()); long timeout = 129423048234L; data.setTimeout(timeout); assertEquals(timeout, data.getTimeoutLong()); timeout = 9089780897L; data.setTimeout(timeout); assertEquals(timeout, data.getTimeoutLong()); } @Test public void testGetSetTimeout_Date() { UniversityData data = new UniversityData(); Date date = null; data.setTimeout(date); assertEquals(new Date(0L), data.getTimeout()); long timeout = 1000002L; date = new Date(timeout); data.setTimeout(date); assertEquals(date, data.getTimeout()); } @Test public void testGetSetTimeout_Cross() { UniversityData data = new UniversityData(); long timeout = 1000002L; Date date = new Date(timeout); data.setTimeout(date); assertEquals(timeout, data.getTimeoutLong()); timeout = 12L; date = new Date(timeout); data.setTimeout(timeout); assertEquals(date, data.getTimeout()); } @Test public void testGetSetRetries() { UniversityData data = new UniversityData(); assertFalse(data.getRetry()); boolean retry = true; data.setRetry(retry); assertEquals(retry, data.getRetry()); retry = false; data.setRetry(retry); assertEquals(retry, data.getRetry()); } @Test public void testEqualsString() { String code = "10L"; String name1 = "Hello"; UniversitySupport support1 = UniversitySupport.HTTPS; String url1 = "Not A URL"; long timeout1 = 788891243455678L; UniversityData data1 = new UniversityData(code, name1, support1, url1, timeout1); assertFalse(data1.equals("String that is not data")); } @Test public void testEqualsOnIncomplete() { String code = "10L"; String name1 = "Hello"; UniversitySupport support1 = UniversitySupport.HTTPS; String url1 = "Not A URL"; long timeout1 = 788891243455678L; UniversityData data1 = new UniversityData(code, name1, support1, url1, timeout1); UniversityData data2 = new UniversityData(null, name1, support1, url1, timeout1); assertFalse(data1.equals(data2)); } @Test public void testEqualsOnlyOnCode() { String code = "10L"; String name1 = "Hello"; UniversitySupport support1 = UniversitySupport.HTTPS; String url1 = "Not A URL"; long timeout1 = 788891243455678L; UniversityData data1 = new UniversityData(code, name1, support1, url1, timeout1); UniversityData data2 = new UniversityData(code, name1 + "Not Eq", UniversitySupport.NONE, url1 + "Not Eq", timeout1 + 10); assertTrue(data1.equals(data2)); } @Test public void testHashCodeOnlyOnCode() { String code = "10L"; String name1 = "Hello"; UniversitySupport support1 = UniversitySupport.HTTPS; String url1 = "Not A URL"; long timeout1 = 788891243455678L; UniversityData data1 = new UniversityData(code, name1, support1, url1, timeout1); UniversityData data2 = new UniversityData(code, name1 + "Not Eq", UniversitySupport.NONE, url1 + "Not Eq", timeout1 + 10); assertEquals(data1.hashCode(), data2.hashCode()); } @Test public void testCompareToOnlyOnCode() { String code = "10L"; String name1 = "Hello"; UniversitySupport support1 = UniversitySupport.HTTPS; String url1 = "Not A URL"; long timeout1 = 788891243455678L; UniversityData data1 = new UniversityData(code, name1, support1, url1, timeout1); UniversityData data2 = new UniversityData(code, name1 + "Not Eq", UniversitySupport.NONE, url1 + "Not Eq", timeout1 + 10); assertEquals(0, data1.compareTo(data2)); } @Test public void testCompareToSupportsNull() { String code = "10L"; String name1 = "Hello"; UniversitySupport support1 = UniversitySupport.HTTPS; String url1 = "Not A URL"; long timeout1 = 788891243455678L; UniversityData data1 = new UniversityData(code, name1, support1, url1, timeout1); assertTrue(data1.compareTo(null) > 0); } @Test public void testCompareToSupportsNullCode() { String code = "10L"; String name1 = "Hello"; UniversitySupport support1 = UniversitySupport.HTTPS; String url1 = "Not A URL"; long timeout1 = 788891243455678L; UniversityData data1 = new UniversityData(code, name1, support1, url1, timeout1); UniversityData data2 = new UniversityData(null, name1, support1, url1, timeout1); // Nulls should be the smallest assertTrue(data1.compareTo(data2) + " > 0", data1.compareTo(data2) > 0); } @Test public void testCompareToSupportsNullCodeBackwards() { String code = "10L"; String name1 = "Hello"; UniversitySupport support1 = UniversitySupport.HTTPS; String url1 = "Not A URL"; long timeout1 = 788891243455678L; UniversityData data1 = new UniversityData(null, name1, support1, url1, timeout1); UniversityData data2 = new UniversityData(code, name1, support1, url1, timeout1); // Nulls should be the smallest assertTrue(data1.compareTo(data2) + " > 0", data1.compareTo(data2) < 0); } @Test public void testCompareTo() { String code = "10L"; String name1 = "Hello"; UniversitySupport support1 = UniversitySupport.HTTPS; String url1 = "Not A URL"; long timeout1 = 788891243455678L; UniversityData data1 = new UniversityData(code, name1, support1, url1, timeout1); UniversityData data2 = new UniversityData(code + "??", name1, support1, url1, timeout1); assertTrue(data1.compareTo(data2) < 0); } // TODO MOVE THIS TEST. @Ignore @Test public void testSetTo() { String code = "10L"; String code2 = code + "123"; String name = "Hello"; UniversitySupport support = UniversitySupport.HTTPS; String url = "Not A URL"; long timeout = 788891243455678L; boolean retry = true; UniversityData oldData = new UniversityData(code, name, support, url, timeout); oldData.setRetry(retry); // Different Code UniversityData data = new UniversityData(code2, name + "Fail", UniversitySupport.NONE, url + "Fail", -1); // TODO Uncomment this line. //data.setTo(oldData); // Check it hasn't changed the code. assertEquals(code2, data.getCode()); assertEquals(name, data.getName()); assertEquals(support, data.getSupport()); assertEquals(url, data.getUrl()); assertEquals(timeout, data.getTimeout()); assertEquals(retry, data.getRetry()); } @Test public void testExportTo() { // TODO write test. } }