UNPKG

typescript-closure-tools

Version:

Command-line tools to convert closure-style JSDoc annotations to typescript, and to convert typescript sources to closure externs files

288 lines (231 loc) 6.96 kB
/// <reference path="valerie.d.ts" /> /// <reference path="../knockout/knockout.d.ts" /> // Tests for valerie.d.ts // Project: https://github.com/davewatts/valerie // Definitions by: Howard Richards <https://github.com/conficient> // Definitions: https://github.com/borisyankov/DefinitelyTyped /* Checks the .d.ts definition work. Not a fully comprehensive set of tests yet. */ /** * Simple enum for enum test */ enum enumTest { male, female } /** * ensure that observable values can validate * */ function ObservableValidationTypes() { // any var t0 = ko.observable<any>() .validate() .end(); // string var t1 = ko.observable<string>("") .validate() .end(); // number var t2 = ko.observable<number>(0) .validate() .end(); // bool var t3 = ko.observable<boolean>(true) .validate() .end(); // date var t4 = ko.observable<Date>(new Date()) .validate() .end(); // enum var t5 = ko.observable<enumTest>(enumTest.male) .validate() .end(); //array var t6 = ko.observableArray<any>(<any[]>[]) .validate() .end(); } function ComputedValidationTests() { var t1 = ko.computed<string>(function () { return "hello world"; }) .validate() .end(); } function RuleTests() { // various values used in rule tests var dummyRule: Valerie.IRule = { test: null, defaultOptions: null }; // valerie supports both value and function arguments in many cases var stringValue = ""; var stringFN = function () { return stringValue; } var numberValue = 1; var numberFN = function () { return numberValue; } var booleanValue = false; var booleanFN = function () { return booleanValue; } var dateValue = new Date(); var dateFN = function () { return dateValue; } var anyValue = <any>{}; var anyFN = function () { return anyValue; } var arrayValue = <any[]>[]; var arrayFN = function () { return arrayValue; } var regexpValue = /\d+/; // rule tests var test_addRule = ko.observable(stringValue) .validate() .addRule(dummyRule) .end(); var test_applicable = ko.observable(stringValue) .validate() .applicable(true) .applicable(function () { return false; }) .end(); var test_currencyMajor = ko.observable(numberValue) .validate() .currencyMajor() .end(); var test_currencyMinor = ko.observable(numberValue) .validate() .currencyMajorMinor() .end(); var test_date = ko.observable(dateValue) .validate() .date() .end(); var test_during = ko.observable(dateValue) .validate() .during(dateValue, dateValue) .during(dateFN, dateFN) .during(dateValue, dateFN) .during(dateFN, dateValue) .end(); var test_earliest = ko.observable(dateValue) .validate() .earliest(dateValue) .end(); var test_email = ko.observable(stringValue) .validate() .email() .end(); var test_entryformat = ko.observable(stringValue) .validate() .entryFormat(stringValue) .end(); var test_expression = ko.observable(stringValue) .validate() .expression(regexpValue) .expression(stringValue) .end(); var test_float = ko.observable(numberValue) .validate() .float() .end(); var test_integer = ko.observable(numberValue) .validate() .integer() .end(); var test_latest = ko.observable(dateValue) .validate() .latest(dateValue) .latest(dateFN) .end(); var test_lengthBetween = ko.observable(stringValue) .validate() .lengthBetween(numberValue, numberValue) .lengthBetween(numberFN, numberFN) .lengthBetween(numberFN, numberValue) .lengthBetween(numberValue, numberFN) .end(); var test_matches = ko.observable(stringValue) .validate() .matches(numberValue) .matches(numberFN) .end(); var test_maximum = ko.observable(0) .validate() .maximum(numberValue) .maximum(numberFN) .end(); var test_maximumNumberOfItems = ko.observableArray([]) .validate() .maximumNumberOfItems(numberValue) .maximumNumberOfItems(numberFN) .end(); var test_minimum = ko.observable(numberValue) .validate() .minimum(numberValue) .minimum(numberFN) .end(); var test_minimumLength = ko.observable("") .validate() .minimumLength(numberValue) .minimumLength(numberFN) .end(); var test_minimumNumberOfItems = ko.observableArray([]) .validate() .minimumNumberOfItems(numberValue) .minimumNumberOfItems(numberFN) .end(); var test_name = ko.observable(stringValue) .validate() .name(stringValue) .end(); var test_noneOf = ko.observable<any>(numberValue) .validate() .noneOf(arrayValue) .noneOf(arrayFN) .end(); var test_not = ko.observable(numberValue) .validate() .not(anyValue) .not(anyFN) .end(); var test_number = ko.observable(numberValue) .validate() .number() .end(); var test_numberOfItems = ko.observableArray(arrayValue) .validate() .numberOfItems(numberValue, numberValue) .numberOfItems(numberFN, numberFN) .numberOfItems(numberFN, numberValue) .numberOfItems(numberValue, numberFN) .end(); var test_oneOf = ko.observable(numberValue) .validate() .oneOf(arrayValue) .oneOf(arrayFN) .end(); var test_postcode = ko.observable(stringValue) .validate() .postcode() .end(); var test_range = ko.observable(numberValue) .validate() .range(numberValue, numberValue) .range(numberValue, numberFN) .range(numberFN, numberValue) .range(numberFN, numberFN) .end(); var test_required = ko.observable(anyValue) .validate() .required() .end(); var test_ruleMessage = ko.observable(anyValue) .validate() .ruleMessage(stringValue) .end(); var test_string = ko.observable(stringValue) .validate() .string() .end(); var test_validateChildProperties = ko.observable(anyValue) .validate() .validateChildProperties() .end(); var test_valueFormat = ko.observable(anyValue) .validate() .valueFormat(stringValue) .end(); var test_rule = ko.observable(anyValue) .validate() .rule(() => { return anyValue; }) .end(); }