Created
October 29, 2015 01:06
-
-
Save Widdershin/fce24aef3426f7628512 to your computer and use it in GitHub Desktop.
.markdown-doctest-setup.js for RxJS tests
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 'use strict'; | |
| let Rx = require('.'); | |
| let assert = require('assert'); | |
| let test = (description, f) => f(); | |
| function ok (isOk, message) { | |
| if (!isOk) { | |
| throw new Error(message); | |
| } | |
| } | |
| function createMessage(expected, actual) { | |
| return 'Expected: [' + expected.toString() + ']\r\nActual: [' + actual.toString() + ']'; | |
| } | |
| function prettyMessage (message) { | |
| if (message.value === undefined) { | |
| return `@${message.time}: NO VALUE `; | |
| } | |
| if (message.value.kind === 'N') { | |
| return ` @${message.time}: ${JSON.stringify(message.value.value)}`; | |
| } | |
| if (message.value.kind === 'C') { | |
| return ` @${message.time}: -- Complete --`; | |
| } | |
| if (message.value.kind === 'E') { | |
| return ` @${message.time}: -- Error! --: ${message.value.error}`; | |
| } | |
| if (message.value.predicate) { | |
| return ` @${message.time}: PREDICATE ${message.value.predicate.toString()}`; | |
| } | |
| return ' IMPLEMENT KIND ' + message.value.kind; | |
| } | |
| function prettyMessages (messages) { | |
| return messages.map(prettyMessage).join('\n'); | |
| } | |
| function createMessage (expected, actual) { | |
| return 'Expected: \n[\n' + prettyMessages(expected) + '\n]\r\n\nActual: \n[\n' + prettyMessages(actual) + '\n]'; | |
| } | |
| var collectionAssert = { | |
| assertEqual: function (actual, expected) { | |
| let comparer = Rx.internals.isEqual; | |
| let isOk = true; | |
| let isEqualSize = true; | |
| if (expected.length !== actual.length) { | |
| console.log('Not equal length. Expected: ' + expected.length + ' Actual: ' + actual.length); | |
| isEqualSize = false; | |
| } | |
| for(var i = 0, len = expected.length; i < len; i++) { | |
| if (expected[i].value && expected[i].value.predicate) { | |
| isOk = expected[i].value.predicate(actual[i].value.error || actual[i].value.value); | |
| } else { | |
| isOk = comparer(expected[i], actual[i]); | |
| } | |
| if (!isOk) { | |
| break; | |
| } | |
| } | |
| assert(isOk && isEqualSize, createMessage(expected, actual)); | |
| } | |
| }; | |
| module.exports = { | |
| require: { | |
| 'rx': Rx | |
| }, | |
| globals: { | |
| Rx, | |
| Subscription: Rx.Subscription, | |
| Recorded: Rx.Recorded, | |
| test, | |
| collectionAssert, | |
| ok | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment