Added tests.

This commit is contained in:
Erik C. Thauvin 2017-05-31 00:21:34 -07:00
parent f9f219abe5
commit cf2d964b6e
6 changed files with 226 additions and 7 deletions

View file

@ -74,6 +74,13 @@ dependencies {
compile files('lib/owm-japis-2.5.0.5.jar')
compileOnly semverJar
testCompile 'org.testng:testng:6.11'
testCompile 'org.assertj:assertj-core:3.8.0'
}
test {
useTestNG()
}
annotationProcessor {

View file

@ -9,6 +9,7 @@ import com.beust.kobalt.plugin.java.javadoc
import com.beust.kobalt.plugin.packaging.assemble
import com.beust.kobalt.plugin.packaging.install
import com.beust.kobalt.plugin.publish.autoGitTag
import net.thauvin.erik.kobalt.plugin.versioneye.versionEye
import java.io.File
import java.io.FileInputStream
import java.util.*
@ -80,6 +81,11 @@ val p = project {
compileOnly(processorJar)
}
dependenciesTest {
compile("org.testng:testng:6.11")
compile("org.assertj:assertj-core:3.8.0")
}
apt {
outputDir = "../src/generated/java/"
}
@ -124,6 +130,11 @@ val p = project {
author = true
links("http://www.jibble.org/javadocs/pircbot/", "http://docs.oracle.com/javase/8/docs/api/")
}
versionEye {
org = "thauvin"
team = "Owners"
}
}
@Task(name = "deploy", dependsOn = arrayOf("assemble", "install"), description = "Deploy application")

View file

@ -143,6 +143,16 @@ final public class Utils {
return (Commands.LINK_CMD + (entryIndex + 1) + "T: " + entry.getPinboardTags().replaceAll(",", ", "));
}
/**
* Capitalize a string.
*
* @param s The string.
* @return The capitalized string.
*/
public static String capitalize(final String s) {
return s.substring(0, 1).toUpperCase() + s.substring(1);
}
/**
* Ensures that the given location (File/URL) has a trailing slash (<code>/</code>) to indicate a directory.
*
@ -169,7 +179,7 @@ final public class Utils {
/**
* Returns a property as an int.
*
* @param property The port property value.
* @param property The property value.
* @param def The default property value.
* @return The port or default value if invalid.
*/
@ -300,7 +310,7 @@ final public class Utils {
* Returns the specified date formatted as <code>yyyy-MM-dd HH:mm</code>
*
* @param date The date.
* @return The fromatted date.
* @return The formatted date.
*/
public static String utcDateTime(final LocalDateTime date) {
return date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));

View file

@ -63,10 +63,6 @@ public class Weather2 extends AbstractModule {
properties.put(OWM_API_KEY_PROP, "");
}
private String capitalize(final String s) {
return s.substring(0, 1).toUpperCase() + s.substring(1);
}
/**
* {@inheritDoc}
*/
@ -147,7 +143,7 @@ public class Weather2 extends AbstractModule {
if (i != 0) {
condition.append(", ").append(w.getWeatherDescription());
} else {
condition.append(capitalize(w.getWeatherDescription()));
condition.append(Utils.capitalize(w.getWeatherDescription()));
}
}
bot.send(sender, condition.toString(), isPrivate);

View file

@ -0,0 +1,137 @@
/*
* UtilsTest.java
*
* Copyright (c) 2004-2017, Erik C. Thauvin (erik@thauvin.net)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* Neither the name of this project nor the names of its contributors may be
* used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.thauvin.erik.mobibot;
import org.jibble.pircbot.Colors;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.io.File;
import java.time.LocalDateTime;
import java.util.Calendar;
import static org.assertj.core.api.Assertions.assertThat;
/**
* The <code>Utils Test</code> class.
*
* @author <a href="https://erik.thauvin.net/" target="_blank">Erik C. Thauvin</a>
* @created 2017-05-30
* @since 1.0
*/
public class UtilsTest {
final Calendar cal = Calendar.getInstance();
final LocalDateTime localDateTime =
LocalDateTime.of(1952, 2, 17, 12, 30, 0);
@BeforeClass
public void setUp() {
cal.set(1952, Calendar.FEBRUARY, 17, 12, 30, 0);
}
@Test
public void testBold() throws Exception {
assertThat(Utils.bold(1)).as("bold(1)").isEqualTo(Colors.BOLD + "1" + Colors.BOLD);
assertThat(Utils.bold("test")).as("bold(test").isEqualTo(Colors.BOLD + "test" + Colors.BOLD);
}
@Test
public void testCapitalize() throws Exception {
assertThat(Utils.capitalize("test")).isEqualTo("Test");
}
@Test
public void testEnsureDir() throws Exception {
assertThat(Utils.ensureDir("test", false)).as("ensureDir(test, false)")
.isEqualTo("test" + File.separatorChar);
assertThat(Utils.ensureDir("http://erik.thauvin.net", true))
.as("ensureDir(erik.thauvin.net, true)").isEqualTo("http://erik.thauvin.net/");
}
@Test
public void testGetIntProperty() throws Exception {
assertThat(Utils.getIntProperty("10", 1)).as("getIntProperty(10, 1)").isEqualTo(10);
assertThat(Utils.getIntProperty("a", 1)).as("getIntProperty(a, 1)").isEqualTo(1);
}
@Test
public void testGreen() throws Exception {
assertThat(Utils.green("test")).isEqualTo(Colors.DARK_GREEN + "test" + Colors.NORMAL);
}
@Test
public void testIsValidString() throws Exception {
assertThat(Utils.isValidString("test")).as("isValidString(test)").isTrue();
assertThat(Utils.isValidString("")).as("isValidString(empty)").isFalse();
assertThat(Utils.isValidString(" ")).as("isValidString( )").isFalse();
assertThat(Utils.isValidString(" \t ")).as("isValidString(tab)").isFalse();
assertThat(Utils.isValidString(null)).as("isValidString(null)").isFalse();
}
@Test
public void testIsoLocalDate() throws Exception {
assertThat(Utils.isoLocalDate(cal.getTime())).as("isoLocalDate(date)").isEqualTo("1952-02-17");
assertThat(Utils.isoLocalDate(localDateTime)).as("isoLocalDate(localDate)").isEqualTo("1952-02-17");
}
@Test
public void testPlural() throws Exception {
assertThat(Utils.plural(1, "test", "tests")).as("plural(1, test, tests)")
.isEqualTo("test");
assertThat(Utils.plural(2, "test", "tests")).as("plural(2, test, tests)")
.isEqualTo("tests");
}
@Test
public void testReverseColor() throws Exception {
assertThat(Utils.reverseColor("test")).isEqualTo(Colors.REVERSE + "test" + Colors.REVERSE);
}
@Test
public void testToday() throws Exception {
assertThat(Utils.today()).isEqualTo(Utils.isoLocalDate(LocalDateTime.now()));
}
@Test
public void testUnescapeXml() throws Exception {
assertThat(Utils.unescapeXml("&lt;a name=&quot;test &amp; &apos;&#39;&quot;&gt;"))
.isEqualTo("<a name=\"test & ''\">");
}
@Test
public void testUtcDateTime() throws Exception {
assertThat(Utils.utcDateTime(cal.getTime())).as("utcDateTime(date)").isEqualTo("1952-02-17 12:30");
assertThat(Utils.utcDateTime(localDateTime)).as("utcDateTime(localDate)")
.isEqualTo("1952-02-17 12:30");
}
}

View file

@ -0,0 +1,58 @@
/*
* LookupTest.java
*
* Copyright (c) 2004-2017, Erik C. Thauvin (erik@thauvin.net)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* Neither the name of this project nor the names of its contributors may be
* used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.thauvin.erik.mobibot.modules;
import org.testng.annotations.Test;
import static org.assertj.core.api.Assertions.assertThat;
/**
* The <code>Lookup Test</code> class.
*
* @author <a href="https://erik.thauvin.net/" target="_blank">Erik C. Thauvin</a>
* @created 2017-05-30
* @since 1.0
*/
public class LookupTest {
@Test
public void testLookup() throws Exception {
final String result = Lookup.lookup("erik.thauvin.net");
assertThat(result).as("lookup(erik.thauvin.net)").contains("104.31.77.12");
}
@Test
public void testWhois() throws Exception {
final String[] result = Lookup.whois("17.178.96.59", Lookup.WHOIS_HOST);
assertThat(result).as("whois(17.178.96.59)")
.contains("Apple Inc. APPLE-WWNET (NET-17-0-0-0-1) 17.0.0.0 - 17.255.255.255");
}
}