can-data-types
Advanced tools
Comparing version
var dataTypes = require("./can-data-types"); | ||
var QUnit = require("steal-qunit"); | ||
var canReflect = require("can-reflect"); | ||
var canSymbol = require("can-symbol"); | ||
var MaybeNumber = dataTypes.MaybeNumber; | ||
var isMemberSymbol = canSymbol.for("can.isMember"); | ||
QUnit.module('can-data-types'); | ||
@@ -9,2 +13,8 @@ | ||
QUnit.equal( canReflect.convert("true", dataTypes.MaybeBoolean), true, "converted"); | ||
QUnit.equal(canReflect.new(dataTypes.MaybeBoolean, "true") , true); | ||
QUnit.equal(dataTypes.MaybeBoolean[Symbol.for("can.isMember")](true) , true); | ||
QUnit.equal(dataTypes.MaybeBoolean[Symbol.for("can.isMember")]("true") , false); | ||
QUnit.equal(dataTypes.MaybeBoolean[Symbol.for("can.isMember")](null) , true); | ||
}); | ||
@@ -15,6 +25,20 @@ | ||
QUnit.equal( canReflect.convert(date.toString(), dataTypes.MaybeDate).getTime(), date.getTime(), "converted"); | ||
QUnit.deepEqual(canReflect.new(dataTypes.MaybeDate, "2018-1-31") , new Date( Date.parse("2018-1-31") ), "new" ); | ||
QUnit.equal(dataTypes.MaybeDate[Symbol.for("can.isMember")](new Date()) , true); | ||
QUnit.equal(dataTypes.MaybeDate[Symbol.for("can.isMember")]({}) , false); | ||
QUnit.equal(dataTypes.MaybeDate[Symbol.for("can.isMember")](null) , true); | ||
}); | ||
QUnit.test('MaybeNumber', function(){ | ||
QUnit.equal( canReflect.convert("5", dataTypes.MaybeNumber), 5, "converted"); | ||
QUnit.equal( canReflect.convert("5", MaybeNumber), 5, "converted"); | ||
QUnit.equal( canReflect.new(MaybeNumber, "1"), 1); | ||
QUnit.equal( MaybeNumber[isMemberSymbol](1) , true); | ||
QUnit.equal( MaybeNumber[isMemberSymbol]("1") , false); | ||
QUnit.equal( MaybeNumber[isMemberSymbol](null) , true); | ||
}); | ||
@@ -24,2 +48,9 @@ | ||
QUnit.equal( canReflect.convert(1, dataTypes.MaybeString), "1", "converted"); | ||
QUnit.equal( canReflect.new(dataTypes.MaybeString, 1) , "1"); | ||
QUnit.equal( dataTypes.MaybeString[Symbol.for("can.isMember")]("1") , true); | ||
QUnit.equal( dataTypes.MaybeString[Symbol.for("can.isMember")](1) , false); | ||
QUnit.equal( dataTypes.MaybeString[Symbol.for("can.isMember")](null) , true); | ||
}); |
@@ -1,5 +0,24 @@ | ||
@page can-data-types | ||
@module {Object} can-data-types | ||
@parent can-typed-data | ||
@collection can-infrastructure | ||
@package ./package.json | ||
@description A package of type objects that are used to test if a value is a | ||
member of the type and convert values to the type. | ||
# can-data-types | ||
@body | ||
Reusable special data types | ||
## Use | ||
This package is used by [can-define] (and eventually [can-observe]) to define | ||
types. These types include a [can-reflect.getSchema] that enables them to be | ||
converted to [can-query-logic] set types. | ||
```js | ||
import {DefineMap, MaybeDate, MaybeString, MaybeNumber} from "can"; | ||
const Todo = DefineMap.extend({ | ||
id: MaybeNumber, | ||
name: MaybeString, | ||
dueDate: MaybeDate | ||
}); | ||
``` |
@@ -23,3 +23,6 @@ var canReflect = require("can-reflect"); | ||
return "MaybeBoolean"; | ||
} | ||
}, | ||
"can.isMember": function(value) { | ||
return value == null || typeof value === "boolean"; | ||
} | ||
}); |
@@ -40,3 +40,6 @@ var canReflect = require("can-reflect"); | ||
return "MaybeDate"; | ||
} | ||
}, | ||
"can.isMember": function(value) { | ||
return value == null || (value instanceof Date); | ||
} | ||
}); |
@@ -20,3 +20,6 @@ var canReflect = require("can-reflect"); | ||
return "MaybeNumber"; | ||
} | ||
}, | ||
"can.isMember": function(value) { | ||
return value == null || typeof value === "number"; | ||
} | ||
}); |
@@ -20,3 +20,6 @@ var canReflect = require("can-reflect"); | ||
return "MaybeString"; | ||
} | ||
}, | ||
"can.isMember": function(value) { | ||
return value == null || typeof value === "string"; | ||
} | ||
}); |
{ | ||
"name": "can-data-types", | ||
"version": "0.1.0", | ||
"version": "0.1.1", | ||
"description": "Reusable special data types", | ||
@@ -50,2 +50,3 @@ "homepage": "", | ||
"devDependencies": { | ||
"can-symbol": "^1.6.1", | ||
"jshint": "^2.9.1", | ||
@@ -52,0 +53,0 @@ "steal": "^1.6.5", |
16563
48.89%20
25%165
23.13%6
20%