UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

269 lines (211 loc) 10.6 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2007-2008 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Martin Wittemann (martinwittemann) ************************************************************************ */ /** * @ignore(qx.Model) */ qx.Class.define("qx.test.core.Validation", { extend : qx.dev.unit.TestCase, construct : function() { this.base(arguments); qx.Class.define("qx.Model", { extend : qx.core.Object, properties : { custom : { init: "Some String", check: "String", validate: "__validateCustom" }, number : { init: 18, validate: qx.util.Validate.number() }, range : { init: 1.80, validate: qx.util.Validate.range(1, 2) }, array : { init: "male", validate: qx.util.Validate.inArray(["male", "female"]) }, email : { init: "martin.wittemann@1und1.de", validate: qx.util.Validate.email() }, string : { init: "Some String!", validate: qx.util.Validate.string() }, url : { init: "http://www.1und1.de", validate: qx.util.Validate.url() }, color : { init : "black", validate: qx.util.Validate.color() }, regExp : { init : "test", validate: qx.util.Validate.regExp(/^abc/) } }, members : { __validateCustom : function(value) { // if the length is lower than 4 if (value.length < 4) { throw new qx.core.ValidationError("Validation Error: String must be longer than three characters. (" + value + ")"); } } } }); this.__model = new qx.Model(); }, members : { testNumber : function() { var model = this.__model; // test for some false inputs this.assertException(function() {model.setNumber("test");}, qx.core.ValidationError, null, "A String is no number."); this.assertException(function() {model.setNumber(new Date());}, qx.core.ValidationError, null, "A Date is no number."); this.assertException(function() {model.setNumber(this);}, qx.core.ValidationError, null, "this is no number."); // test an positive integer model.setNumber(12); this.assertEquals(12, model.getNumber()); // test an negative integer model.setNumber(-20); this.assertEquals(-20, model.getNumber()); // test an float model.setNumber(12.15); this.assertEquals(12.15, model.getNumber()); }, testEmail : function() { var model = this.__model; // test some wrong addresses this.assertException(function() {model.setEmail("test");}, qx.core.ValidationError, null, "test is a mailadress?"); this.assertException(function() {model.setEmail("@affe.de");}, qx.core.ValidationError, null, "@affe.de is never a mailadress!"); this.assertException(function() {model.setEmail("hans@@wurst.de");}, qx.core.ValidationError, null, "Are two @ allowed?"); this.assertException(function() {model.setEmail("m@a.d");}, qx.core.ValidationError, null, "m@a.d?"); // test some working addresses model.setEmail("affe@zoo.de"); this.assertEquals("affe@zoo.de", model.getEmail(), "affe@zoo.de should work!"); model.setEmail("mensch@db.info"); this.assertEquals("mensch@db.info", model.getEmail(), "mensch@db.info should work!"); model.setEmail("ichbineinelangemailadresse@undhabeinelangedomainnochdazu.de"); this.assertEquals("ichbineinelangemailadresse@undhabeinelangedomainnochdazu.de", model.getEmail(), "ichbineinelangemailadresse@undhabeinelangedomainnochdazu.de should work!"); }, testString : function() { var model = this.__model; // test some wrong inputs this.assertException(function() {model.setString(1);}, qx.core.ValidationError, null, "A number is not a string!"); this.assertException(function() {model.setString(this);}, qx.core.ValidationError, null, "This test is not a string!"); this.assertException(function() {model.setString(true);}, qx.core.ValidationError, null, "A boolean is not a string!"); this.assertException(function() {model.setString(new Date());}, qx.core.ValidationError, null, "A Date-Object is not a string!"); // Test some working inputs model.setString("affe@zoo.de"); this.assertEquals("affe@zoo.de", model.getString(), "affe@zoo.de as string should work!"); model.setString(""); this.assertEquals("", model.getString(), "An empty string should work!"); }, testUrl : function() { var model = this.__model; // test some wrong inputs this.assertException(function() {model.setUrl(1);}, qx.core.ValidationError, null, "A number is not an url!"); this.assertException(function() {model.setUrl(false);}, qx.core.ValidationError, null, "A boolean is not an url!"); this.assertException(function() {model.setUrl("i am an url");}, qx.core.ValidationError, null, "'i am an url' as a string is not an url!"); this.assertException(function() {model.setUrl("http:/iamaurl");}, qx.core.ValidationError, null, "'http://iamaurl' is not an url!"); // Test some working inputs model.setUrl("http://www.1und1.de"); this.assertEquals("http://www.1und1.de", model.getUrl(), "http://www.1und1.de as string should work!"); model.setUrl("http://web.de"); this.assertEquals("http://web.de", model.getUrl(), "http://web.de as string should work!"); model.setUrl("http://www.apple.com/de/"); this.assertEquals("http://www.apple.com/de/", model.getUrl(), "http://www.apple.com/de/ as string should work!"); model.setUrl("http://www.fake.url:8080/de/1546"); this.assertEquals("http://www.fake.url:8080/de/1546", model.getUrl(), "http://www.fake.url:8080/de/1546 as string should work!"); }, testColor : function() { var model = this.__model; // test some wrong inputs this.assertException(function() {model.setColor(1);}, qx.core.ValidationError, null, "A number is not a color!"); this.assertException(function() {model.setColor("");}, qx.core.ValidationError, null, "A empty string is not a color!"); this.assertException(function() {model.setColor("FFFFFF");}, qx.core.ValidationError, null, "FFFFFF (missing #) is not a color!"); this.assertException(function() {model.setColor("bluecolor");}, qx.core.ValidationError, null, "'bluecolor' is not a color!"); this.assertException(function() {model.setColor("#FFFFGG");}, qx.core.ValidationError, null, "#FFFFGG is not a color!"); // Test some working inputs model.setColor("black"); this.assertEquals("black", model.getColor(), "black is a css color"); model.setColor("#000000"); this.assertEquals("#000000", model.getColor(), "#000000 is a RGB color"); model.setColor("#FFFFFF"); this.assertEquals("#FFFFFF", model.getColor(), "#FFFFFF is a css color"); }, testRange : function() { var model = this.__model; // test some wrong inputs (Rage defined from 1 to 2 including both) this.assertException(function() {model.setRange(0.999999999);}, qx.core.ValidationError, null, "A 0.999999999 is not between 1 and 2."); this.assertException(function() {model.setRange(2.000000001);}, qx.core.ValidationError, null, "A 2.000000001 is not between 1 and 2."); // Test some working inputs model.setRange(1); this.assertEquals(1, model.getRange(), "1 is in the range of 1 and 2."); model.setRange(2); this.assertEquals(2, model.getRange(), "2 is in the range of 1 and 2."); model.setRange(1.5); this.assertEquals(1.5, model.getRange(), "1.5 is in the range of 1 and 2."); }, testInArray : function() { var model = this.__model; // test some wrong inputs (allowed are male and female) this.assertException(function() {model.setArray(0.999999999);}, qx.core.ValidationError, null, "A 0.999999999 is not in ['male', 'female']"); this.assertException(function() {model.setArray("malle");}, qx.core.ValidationError, null, "'malle' is not in ['male', 'female']"); this.assertException(function() {model.setArray("");}, qx.core.ValidationError, null, "A empty string is not in ['male', 'female']"); // Test some working inputs model.setArray("male"); this.assertEquals("male", model.getArray(), "male is in!"); model.setArray("female"); this.assertEquals("female", model.getArray(), "female is in!"); }, testCustom : function() { var model = this.__model; // test some wrong inputs (String must be longer than 3) this.assertException(function() {model.setCustom("");}, qx.core.ValidationError, null, "'' is too short"); this.assertException(function() {model.setCustom("1");}, qx.core.ValidationError, null, "'1' is too short"); this.assertException(function() {model.setCustom("12");}, qx.core.ValidationError, null, "'12' is too short"); this.assertException(function() {model.setCustom("123");}, qx.core.ValidationError, null, "'123' is too short"); // Test some working inputs model.setCustom("male"); this.assertEquals("male", model.getCustom(), "male is long enough!"); }, testRegExp : function() { var model = this.__model; // test some wrong inputs (Only digits) this.assertException(function() {model.setRegExp("AFFE!");}, qx.core.ValidationError, null, "'AFFE!' does not fit /[0-9]*/."); this.assertException(function() {model.setRegExp("_dfds_");}, qx.core.ValidationError, null, "_dfds_ does not fit /[0-9]*/."); this.assertException(function() {model.setRegExp("$%&!&/%");}, qx.core.ValidationError, null, "$%&!&/% does not fit /[0-9]*/."); // Test some working inputs model.setRegExp("abc"); this.assertEquals("abc", model.getRegExp(), "abc fits!"); model.setRegExp("abcdefg"); this.assertEquals("abcdefg", model.getRegExp(), "abcdefg fits!"); } } });