Browse files

Merge pull request #5 from ianstormtaylor/element

added `element` type
  • Loading branch information...
2 parents 1f1ea85 + 51f85e3 commit 974ec8d726fa338158d116e256c23878b4c94ed4 @tj tj committed Mar 12, 2013
Showing with 5,654 additions and 31 deletions.
  1. +3 −3 Makefile
  2. +3 −0 component.json
  3. +1 −0 index.js
  4. +17 −0 test/index.html
  5. +231 −0 test/mocha.css
  6. +5,340 −0 test/mocha.js
  7. +59 −0 test/tests.js
  8. +0 −28 test/type.js
View
6 Makefile
@@ -1,7 +1,4 @@
-test:
- @node test/type
-
build: components index.js
@component build
@@ -11,4 +8,7 @@ components:
clean:
rm -fr build components template.js
+test:
+ open test/index.html
+
.PHONY: clean test
View
3 component.json
@@ -4,6 +4,9 @@
"version": "0.0.1",
"keywords": ["typeof", "type", "utility"],
"dependencies": {},
+ "development": {
+ "component/assert": "*"
+ },
"scripts": [
"index.js"
]
View
1 index.js
@@ -25,6 +25,7 @@ module.exports = function(val){
if (val === null) return 'null';
if (val === undefined) return 'undefined';
+ if (val && val.nodeType === 1) return 'element';
if (val === Object(val)) return 'object';
return typeof val;
View
17 test/index.html
@@ -0,0 +1,17 @@
+<html>
+ <head>
+ <title>Mocha</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <link rel="stylesheet" href="mocha.css" />
+ </head>
+ <body>
+ <div id="mocha"></div>
+ <script src="mocha.js"></script>
+ <script>mocha.setup('bdd')</script>
+ <script src="../build/build.js"></script>
+ <script src="tests.js"></script>
+ <script>
+ mocha.run();
+ </script>
+ </body>
+</html>
View
231 test/mocha.css
@@ -0,0 +1,231 @@
+@charset "utf-8";
+
+body {
+ font: 20px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif;
+ padding: 60px 50px;
+}
+
+#mocha ul, #mocha li {
+ margin: 0;
+ padding: 0;
+}
+
+#mocha ul {
+ list-style: none;
+}
+
+#mocha h1, #mocha h2 {
+ margin: 0;
+}
+
+#mocha h1 {
+ margin-top: 15px;
+ font-size: 1em;
+ font-weight: 200;
+}
+
+#mocha h1 a {
+ text-decoration: none;
+ color: inherit;
+}
+
+#mocha h1 a:hover {
+ text-decoration: underline;
+}
+
+#mocha .suite .suite h1 {
+ margin-top: 0;
+ font-size: .8em;
+}
+
+.hidden {
+ display: none;
+}
+
+#mocha h2 {
+ font-size: 12px;
+ font-weight: normal;
+ cursor: pointer;
+}
+
+#mocha .suite {
+ margin-left: 15px;
+}
+
+#mocha .test {
+ margin-left: 15px;
+ overflow: hidden;
+}
+
+#mocha .test.pending:hover h2::after {
+ content: '(pending)';
+ font-family: arial;
+}
+
+#mocha .test.pass.medium .duration {
+ background: #C09853;
+}
+
+#mocha .test.pass.slow .duration {
+ background: #B94A48;
+}
+
+#mocha .test.pass::before {
+ content: '';
+ font-size: 12px;
+ display: block;
+ float: left;
+ margin-right: 5px;
+ color: #00d6b2;
+}
+
+#mocha .test.pass .duration {
+ font-size: 9px;
+ margin-left: 5px;
+ padding: 2px 5px;
+ color: white;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
+ -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ -ms-border-radius: 5px;
+ -o-border-radius: 5px;
+ border-radius: 5px;
+}
+
+#mocha .test.pass.fast .duration {
+ display: none;
+}
+
+#mocha .test.pending {
+ color: #0b97c4;
+}
+
+#mocha .test.pending::before {
+ content: '';
+ color: #0b97c4;
+}
+
+#mocha .test.fail {
+ color: #c00;
+}
+
+#mocha .test.fail pre {
+ color: black;
+}
+
+#mocha .test.fail::before {
+ content: '';
+ font-size: 12px;
+ display: block;
+ float: left;
+ margin-right: 5px;
+ color: #c00;
+}
+
+#mocha .test pre.error {
+ color: #c00;
+ max-height: 300px;
+ overflow: auto;
+}
+
+#mocha .test pre {
+ display: block;
+ float: left;
+ clear: left;
+ font: 12px/1.5 monaco, monospace;
+ margin: 5px;
+ padding: 15px;
+ border: 1px solid #eee;
+ border-bottom-color: #ddd;
+ -webkit-border-radius: 3px;
+ -webkit-box-shadow: 0 1px 3px #eee;
+ -moz-border-radius: 3px;
+ -moz-box-shadow: 0 1px 3px #eee;
+}
+
+#mocha .test h2 {
+ position: relative;
+}
+
+#mocha .test a.replay {
+ position: absolute;
+ top: 3px;
+ right: 0;
+ text-decoration: none;
+ vertical-align: middle;
+ display: block;
+ width: 15px;
+ height: 15px;
+ line-height: 15px;
+ text-align: center;
+ background: #eee;
+ font-size: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
+ -webkit-transition: opacity 200ms;
+ -moz-transition: opacity 200ms;
+ transition: opacity 200ms;
+ opacity: 0.3;
+ color: #888;
+}
+
+#mocha .test:hover a.replay {
+ opacity: 1;
+}
+
+#mocha-report.pass .test.fail {
+ display: none;
+}
+
+#mocha-report.fail .test.pass {
+ display: none;
+}
+
+#mocha-error {
+ color: #c00;
+ font-size: 1.5 em;
+ font-weight: 100;
+ letter-spacing: 1px;
+}
+
+#mocha-stats {
+ position: fixed;
+ top: 15px;
+ right: 10px;
+ font-size: 12px;
+ margin: 0;
+ color: #888;
+}
+
+#mocha-stats .progress {
+ float: right;
+ padding-top: 0;
+}
+
+#mocha-stats em {
+ color: black;
+}
+
+#mocha-stats a {
+ text-decoration: none;
+ color: inherit;
+}
+
+#mocha-stats a:hover {
+ border-bottom: 1px solid #eee;
+}
+
+#mocha-stats li {
+ display: inline-block;
+ margin: 0 5px;
+ list-style: none;
+ padding-top: 11px;
+}
+
+code .comment { color: #ddd }
+code .init { color: #2F6FAD }
+code .string { color: #5890AD }
+code .keyword { color: #8A6343 }
+code .number { color: #2F6FAD }
View
5,340 test/mocha.js
5,340 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
59 test/tests.js
@@ -0,0 +1,59 @@
+var type = require('type')
+ , assert = require('component-assert');
+
+describe('type', function(){
+ it('should match objects', function(){
+ function Foo(){}
+ assert('object' === type({}));
+ assert('object' === type(new Foo));
+ assert('object' === type(new Boolean(true)));
+ assert('object' === type(new Number(123)));
+ // assert('object' === type(new String('whoop')));
+ });
+
+ it('should match numbers', function(){
+ assert('number' === type(12));
+ });
+
+ it('should match strings', function(){
+ assert('string' === type("test"));
+ });
+
+ it('should match dates', function(){
+ assert('date' === type(new Date));
+ });
+
+ it('should match booleans', function(){
+ assert('boolean' === type(true));
+ assert('boolean' === type(false));
+ });
+
+ it('should match null', function(){
+ assert('null' === type(null));
+ });
+
+ it('should match undefined', function(){
+ assert('undefined' === type(undefined));
+ });
+
+ it('should match arrays', function(){
+ assert('array' === type([]));
+ });
+
+ it('should match regexps', function(){
+ assert('regexp' === type(/asdf/));
+ assert('regexp' === type(new RegExp('weee')));
+ });
+
+ it('should match functions', function(){
+ assert('function' === type(function(){}));
+ });
+
+ it('should match arguments', function(){
+ assert('arguments' === type((function(){ return arguments })()));
+ });
+
+ it('should match elements', function(){
+ assert('element' === type(document.createElement('div')));
+ });
+});
View
28 test/type.js
@@ -1,28 +0,0 @@
-
-var type = require('..');
-
-function assert(expected, val) {
- if (expected != type(val)) {
- throw new Error('expected "' + expected + '" for ' + val + ' but got "' + type(val) + '"');
- }
-}
-
-function Foo(){}
-
-assert('object', {});
-assert('object', new Foo);
-assert('object', new Boolean(true));
-assert('object', new Number(123));
-assert('object', new String('whoop'));
-assert('number', 12);
-assert('string', "test");
-assert('date', new Date);
-assert('boolean', true);
-assert('boolean', false);
-assert('null', null);
-assert('undefined', undefined);
-assert('array', []);
-assert('regexp', /asdf/);
-assert('regexp', new RegExp('weee'));
-assert('function', function(){});
-assert('arguments', (function(){ return arguments })());

0 comments on commit 974ec8d

Please sign in to comment.