signet
Version:
Signet type library
170 lines (162 loc) • 5.54 kB
HTML
<html>
<head>
<title>Signet -- Mochadoc Test Documentation</title>
<link rel="stylesheet" href="../assets/doc-style.css" media="screen">
<link rel="stylesheet" href="../assets/github-gist.css" media="screen">
</head>
<body>
<header>
<a href="../index.html"><span id="library-name">Signet</span>
<span id="subtitle">Mochadoc-Generated Test Documents</span></a>
</header>
<div class="content">
<h1>Signet Macros</h1>
<div>
<a href="#" class="collapse-all collapse-link">Collapse All</a>
</div>
<ul>
<li class="describe-item">
<h3>type-level macros</h3>
<div><a href="#" class="describe-link collapse-link"></a></div>
<ul class="describe-collapsible shown">
<ul>
<li>
<strong>should support option type macro</strong>
</li>
<li>File location: <span class="filename">./test/macros.test.js</span></li>
<li class="code-sample-wrapper">
<div class="code-expand">
<a href="#" class="collapse-link"></a>
</div>
<pre class="code-sample">
<code>
function () {
assert.equal(signet.isTypeOf('?string')(undefined), true);
assert.equal(signet.isTypeOf('?string')('foo'), true);
assert.equal(signet.isTypeOf('?string')({}), false);
}
</code>
</pre>
</li>
</ul>
<ul>
<li>
<strong>should support defined type macro</strong>
</li>
<li>File location: <span class="filename">./test/macros.test.js</span></li>
<li class="code-sample-wrapper">
<div class="code-expand">
<a href="#" class="collapse-link"></a>
</div>
<pre class="code-sample">
<code>
function () {
assert.equal(signet.isTypeOf('!*')(undefined), false);
assert.equal(signet.isTypeOf('!*')(null), false);
assert.equal(signet.isTypeOf('!*')({}), true);
}
</code>
</pre>
</li>
</ul>
<ul>
<li>
<strong>should support an empty parentheses "any" type macro</strong>
</li>
<li>File location: <span class="filename">./test/macros.test.js</span></li>
<li class="code-sample-wrapper">
<div class="code-expand">
<a href="#" class="collapse-link"></a>
</div>
<pre class="code-sample">
<code>
function () {
assert.equal(signet.isTypeOf('()')('foo'), true);
assert.doesNotThrow(signet.enforce('() => undefined', function () { }));
}
</code>
</pre>
</li>
</ul>
<ul>
<li>
<strong>should support a not macro</strong>
</li>
<li>File location: <span class="filename">./test/macros.test.js</span></li>
<li class="code-sample-wrapper">
<div class="code-expand">
<a href="#" class="collapse-link"></a>
</div>
<pre class="code-sample">
<code>
function () {
assert.equal(signet.isTypeOf('^string')('foo'), false);
assert.equal(signet.isTypeOf('^string')(null), true);
}
</code>
</pre>
</li>
</ul>
</ul>
</li>
<li class="describe-item">
<h3>Signature-level Macros</h3>
<div><a href="#" class="describe-link collapse-link"></a></div>
<ul class="describe-collapsible shown">
<ul>
<li>
<strong>should parse function definition with nested function definition</strong>
</li>
<li>File location: <span class="filename">./test/macros.test.js</span></li>
<li class="code-sample-wrapper">
<div class="code-expand">
<a href="#" class="collapse-link"></a>
</div>
<pre class="code-sample">
<code>
function () {
var doStuff = signet.sign('(* => boolean) => array', () => []);
assert.equal(doStuff.signature, 'function<* => boolean> => array');
}
</code>
</pre>
</li>
</ul>
</ul>
</li>
<li class="describe-item">
<h3>Macro handling</h3>
<div><a href="#" class="describe-link collapse-link"></a></div>
<ul class="describe-collapsible shown">
<ul>
<li>
<strong>should properly sign a function using macros</strong>
</li>
<li>File location: <span class="filename">./test/macros.test.js</span></li>
<li class="code-sample-wrapper">
<div class="code-expand">
<a href="#" class="collapse-link"></a>
</div>
<pre class="code-sample">
<code>
function () {
var expectedValue = 'something:[not<variant<undefined, null>>], somethingElse:[variant<undefined;null;string>], aFunction:function<* => *> => null';
var testFn = signet.enforce(
'something:[!*], somethingElse:[?string], aFunction:(* => *) => null',
() => null
);
assert.equal(testFn.signature, expectedValue);
}
</code>
</pre>
</li>
</ul>
</ul>
</li>
</ul>
</div>
<script src="../assets/code-collapse.js"></script>
<script src="../assets/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</body>
</html>