From 49d7989fdb81b18ce22165c9727b3251c2c1f591 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 31 Aug 2009 16:58:07 +0200 Subject: [PATCH] ItEr24S08CUAsignacionGrupoRecursosAPlanificacionItEr23S10: Creating ScriptDependency class representing a dependency. --- .../ganttz/util/script/ScriptDependency.java | 55 +++++++++++++++ .../util/script/ScriptDependencyTest.java | 70 +++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptDependency.java create mode 100644 ganttzk/src/test/java/org/zkoss/ganttz/util/script/ScriptDependencyTest.java diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptDependency.java b/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptDependency.java new file mode 100644 index 000000000..cbc6f693c --- /dev/null +++ b/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptDependency.java @@ -0,0 +1,55 @@ +package org.zkoss.ganttz.util.script; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.Validate; +import org.apache.commons.lang.builder.HashCodeBuilder; + +/** + * Represents a dependency to a script + * @author Óscar González Fernández + */ +public class ScriptDependency { + + private final String url; + private final List dependsOn; + + public ScriptDependency(String url) { + this(url, Collections. emptyList()); + } + + public ScriptDependency(String url, Collection dependencies) { + Validate.notEmpty(url); + Validate.noNullElements(dependencies); + this.url = url; + this.dependsOn = Collections.unmodifiableList(new ArrayList( + dependencies)); + } + + public String getURL() { + return this.url; + } + + public List getDependsOn() { + return dependsOn; + } + + @Override + public boolean equals(Object other) { + if (this == other) + return true; + if (other instanceof ScriptDependency) { + return url.equals(((ScriptDependency) other).url); + } + return false; + } + + @Override + public int hashCode() { + return new HashCodeBuilder().append(url).toHashCode(); + } + +} diff --git a/ganttzk/src/test/java/org/zkoss/ganttz/util/script/ScriptDependencyTest.java b/ganttzk/src/test/java/org/zkoss/ganttz/util/script/ScriptDependencyTest.java new file mode 100644 index 000000000..193c2c1d7 --- /dev/null +++ b/ganttzk/src/test/java/org/zkoss/ganttz/util/script/ScriptDependencyTest.java @@ -0,0 +1,70 @@ +package org.zkoss.ganttz.util.script; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.not; +import static org.junit.Assert.assertThat; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; + +public class ScriptDependencyTest { + + private ScriptDependency script; + private String url; + private List dependencies; + + private void givenScript() { + url = "blabla/zkau/web/js/yui/2.7.0/selector/selector-min.js"; + dependencies = new ArrayList(); + dependencies.add(new ScriptDependency("blabla/blabla/bla.js")); + script = new ScriptDependency(url, dependencies); + } + + @Test + public void aScriptHasAURL() { + givenScript(); + assertThat(script.getURL(), equalTo(url)); + } + + @Test(expected = IllegalArgumentException.class) + public void theURLMustBeNotNull() { + new ScriptDependency(null); + } + + @Test(expected = IllegalArgumentException.class) + public void theURLMustBeNotEmpty() { + new ScriptDependency(""); + } + + @Test(expected = IllegalArgumentException.class) + public void noDependenciesCanBeNull() { + List list = new ArrayList(); + list.add(null); + new ScriptDependency("bla", list); + } + + @Test + public void aScriptCanHaveDependencies() { + givenScript(); + assertThat(script.getDependsOn(), equalTo(dependencies)); + } + + @Test(expected = UnsupportedOperationException.class) + public void theDependenciesCannotBeModified() { + givenScript(); + script.getDependsOn().clear(); + } + + @Test + public void twoScriptsAreEqualsIfHaveTheSameURL() { + givenScript(); + ScriptDependency scriptDependencyWithSameURL = new ScriptDependency(url); + assertThat(scriptDependencyWithSameURL, equalTo(script)); + assertThat(scriptDependencyWithSameURL.hashCode(), equalTo(script + .hashCode())); + assertThat(new ScriptDependency(url + "b"), not(equalTo(script))); + } + +}