{
  "stats": {
    "suites": 11,
    "tests": 8,
    "passes": 8,
    "pending": 0,
    "failures": 0,
    "start": "2018-01-05T10:26:36.649Z",
    "end": "2018-01-05T10:26:36.718Z",
    "duration": 69,
    "testsRegistered": 8,
    "passPercent": 100,
    "pendingPercent": 0,
    "other": 0,
    "hasOther": false,
    "skipped": 0,
    "hasSkipped": false,
    "passPercentClass": "success",
    "pendingPercentClass": "danger"
  },
  "suites": {
    "title": "",
    "suites": [
      {
        "title": "UT02: lib-ablauf",
        "suites": [
          {
            "title": "UT02-01: toJson",
            "suites": [],
            "tests": [
              {
                "title": "UT02-01-01: json from file should match json",
                "fullTitle": "UT02: lib-ablauf UT02-01: toJson UT02-01-01: json from file should match json",
                "timedOut": false,
                "duration": 13,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "fs.readFile('./tests/data/ablauf.col', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    ablauf.toJSON(data, function (err, json) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/ablauf.json', 'utf8', function (err, ablaufjson) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            let aj = JSON.parse(ablaufjson)\n            assert.deepEqual(json, aj.items)\n            done()\n          }\n        })\n      }\n    })\n  }\n})",
                "err": {},
                "isRoot": false,
                "uuid": "5934ebd9-9ac0-4c3b-9a9c-6af2beac5e4b",
                "parentUUID": "86edb984-5746-427f-8d7e-b9d303ceec6e",
                "isHook": false,
                "skipped": false
              }
            ],
            "pending": [],
            "root": false,
            "_timeout": 2000,
            "file": "/tests/test.ablauf.js",
            "uuid": "86edb984-5746-427f-8d7e-b9d303ceec6e",
            "beforeHooks": [],
            "afterHooks": [],
            "fullFile": "/mnt/c/Users/sigmu/Code/lib-songbeamer/tests/test.ablauf.js",
            "passes": [
              {
                "title": "UT02-01-01: json from file should match json",
                "fullTitle": "UT02: lib-ablauf UT02-01: toJson UT02-01-01: json from file should match json",
                "timedOut": false,
                "duration": 13,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "fs.readFile('./tests/data/ablauf.col', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    ablauf.toJSON(data, function (err, json) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/ablauf.json', 'utf8', function (err, ablaufjson) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            let aj = JSON.parse(ablaufjson)\n            assert.deepEqual(json, aj.items)\n            done()\n          }\n        })\n      }\n    })\n  }\n})",
                "err": {},
                "isRoot": false,
                "uuid": "5934ebd9-9ac0-4c3b-9a9c-6af2beac5e4b",
                "parentUUID": "86edb984-5746-427f-8d7e-b9d303ceec6e",
                "isHook": false,
                "skipped": false
              }
            ],
            "failures": [],
            "skipped": [],
            "hasBeforeHooks": false,
            "hasAfterHooks": false,
            "hasTests": true,
            "hasSuites": false,
            "totalTests": 1,
            "totalPasses": 1,
            "totalFailures": 0,
            "totalPending": 0,
            "totalSkipped": 0,
            "hasPasses": true,
            "hasFailures": false,
            "hasPending": false,
            "hasSkipped": false,
            "duration": 13,
            "rootEmpty": false
          },
          {
            "title": "UT02-02: toFile",
            "suites": [],
            "tests": [
              {
                "title": "UT02-02-01: string from json should match file",
                "fullTitle": "UT02: lib-ablauf UT02-02: toFile UT02-02-01: string from json should match file",
                "timedOut": false,
                "duration": 3,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "fs.readFile('./tests/data/ablauf.json', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    var aj = JSON.parse(data)\n    ablauf.toFile(aj.items, function (err, text) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/ablauf.col', 'utf8', function (err, ablauftext) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            assert.equal(text, ablauftext)\n            done()\n          }\n        })\n      }\n    })\n  }\n})",
                "err": {},
                "isRoot": false,
                "uuid": "6b27cba2-caed-4928-b8cc-f64a7cc5e1a0",
                "parentUUID": "28520a7a-5312-43a3-9901-d90bd412f290",
                "isHook": false,
                "skipped": false
              }
            ],
            "pending": [],
            "root": false,
            "_timeout": 2000,
            "file": "/tests/test.ablauf.js",
            "uuid": "28520a7a-5312-43a3-9901-d90bd412f290",
            "beforeHooks": [],
            "afterHooks": [],
            "fullFile": "/mnt/c/Users/sigmu/Code/lib-songbeamer/tests/test.ablauf.js",
            "passes": [
              {
                "title": "UT02-02-01: string from json should match file",
                "fullTitle": "UT02: lib-ablauf UT02-02: toFile UT02-02-01: string from json should match file",
                "timedOut": false,
                "duration": 3,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "fs.readFile('./tests/data/ablauf.json', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    var aj = JSON.parse(data)\n    ablauf.toFile(aj.items, function (err, text) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/ablauf.col', 'utf8', function (err, ablauftext) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            assert.equal(text, ablauftext)\n            done()\n          }\n        })\n      }\n    })\n  }\n})",
                "err": {},
                "isRoot": false,
                "uuid": "6b27cba2-caed-4928-b8cc-f64a7cc5e1a0",
                "parentUUID": "28520a7a-5312-43a3-9901-d90bd412f290",
                "isHook": false,
                "skipped": false
              }
            ],
            "failures": [],
            "skipped": [],
            "hasBeforeHooks": false,
            "hasAfterHooks": false,
            "hasTests": true,
            "hasSuites": false,
            "totalTests": 1,
            "totalPasses": 1,
            "totalFailures": 0,
            "totalPending": 0,
            "totalSkipped": 0,
            "hasPasses": true,
            "hasFailures": false,
            "hasPending": false,
            "hasSkipped": false,
            "duration": 3,
            "rootEmpty": false
          }
        ],
        "tests": [],
        "pending": [],
        "root": false,
        "_timeout": 2000,
        "file": "/tests/test.ablauf.js",
        "uuid": "e9993fdf-3d1a-4e9c-9b0e-e30d3f14636e",
        "beforeHooks": [],
        "afterHooks": [],
        "fullFile": "/mnt/c/Users/sigmu/Code/lib-songbeamer/tests/test.ablauf.js",
        "passes": [],
        "failures": [],
        "skipped": [],
        "hasBeforeHooks": false,
        "hasAfterHooks": false,
        "hasTests": false,
        "hasSuites": true,
        "totalTests": 0,
        "totalPasses": 0,
        "totalFailures": 0,
        "totalPending": 0,
        "totalSkipped": 0,
        "hasPasses": false,
        "hasFailures": false,
        "hasPending": false,
        "hasSkipped": false,
        "duration": 0,
        "rootEmpty": false
      },
      {
        "title": "UT03: lib-songbeamer (full module)",
        "suites": [
          {
            "title": "UT03-01: AblauftoJson",
            "suites": [],
            "tests": [
              {
                "title": "UT03-01-01: json from file should match json",
                "fullTitle": "UT03: lib-songbeamer (full module) UT03-01: AblauftoJson UT03-01-01: json from file should match json",
                "timedOut": false,
                "duration": 3,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "lsb.ablauf2JSON('./tests/data/ablauf.col', function (err, json) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    fs.readFile('./tests/data/ablauf.json', 'utf8', function (err, ablaufjson) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        let aj = JSON.parse(ablaufjson)\n        assert.deepEqual(json, aj)\n        done()\n      }\n    })\n  }\n})",
                "err": {},
                "isRoot": false,
                "uuid": "1b89621d-3ade-4485-bd92-65204668f4ed",
                "parentUUID": "6a92b1ea-8dfa-4ced-b47d-73b5fb1b051e",
                "isHook": false,
                "skipped": false
              }
            ],
            "pending": [],
            "root": false,
            "_timeout": 2000,
            "file": "/tests/test.index.js",
            "uuid": "6a92b1ea-8dfa-4ced-b47d-73b5fb1b051e",
            "beforeHooks": [],
            "afterHooks": [],
            "fullFile": "/mnt/c/Users/sigmu/Code/lib-songbeamer/tests/test.index.js",
            "passes": [
              {
                "title": "UT03-01-01: json from file should match json",
                "fullTitle": "UT03: lib-songbeamer (full module) UT03-01: AblauftoJson UT03-01-01: json from file should match json",
                "timedOut": false,
                "duration": 3,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "lsb.ablauf2JSON('./tests/data/ablauf.col', function (err, json) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    fs.readFile('./tests/data/ablauf.json', 'utf8', function (err, ablaufjson) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        let aj = JSON.parse(ablaufjson)\n        assert.deepEqual(json, aj)\n        done()\n      }\n    })\n  }\n})",
                "err": {},
                "isRoot": false,
                "uuid": "1b89621d-3ade-4485-bd92-65204668f4ed",
                "parentUUID": "6a92b1ea-8dfa-4ced-b47d-73b5fb1b051e",
                "isHook": false,
                "skipped": false
              }
            ],
            "failures": [],
            "skipped": [],
            "hasBeforeHooks": false,
            "hasAfterHooks": false,
            "hasTests": true,
            "hasSuites": false,
            "totalTests": 1,
            "totalPasses": 1,
            "totalFailures": 0,
            "totalPending": 0,
            "totalSkipped": 0,
            "hasPasses": true,
            "hasFailures": false,
            "hasPending": false,
            "hasSkipped": false,
            "duration": 3,
            "rootEmpty": false
          },
          {
            "title": "UT03-02: AblauftoFile",
            "suites": [],
            "tests": [
              {
                "title": "UT03-02-01: string from json should match file",
                "fullTitle": "UT03: lib-songbeamer (full module) UT03-02: AblauftoFile UT03-02-01: string from json should match file",
                "timedOut": false,
                "duration": 15,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "fs.readFile('./tests/data/ablauf.json', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    var aj = JSON.parse(data)\n    lsb.json2Ablauf(aj, './tests/tmp/ablauf.col', function (err) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/ablauf.col', 'utf8', function (err, ablauftext) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            fs.readFile('./tests/tmp/ablauf.col', 'utf8', function (err, tmptext) {\n              if (err) {\n                done(new Error(err))\n              } else {\n                assert.equal(tmptext, ablauftext)\n                done()\n              }\n            })\n          }\n        })\n      }\n    })\n  }\n})",
                "err": {},
                "isRoot": false,
                "uuid": "97c88a34-0f9a-4a45-a77f-27c2073a9c99",
                "parentUUID": "3cad57d0-8472-4da5-bbe3-725690b86fd0",
                "isHook": false,
                "skipped": false
              }
            ],
            "pending": [],
            "root": false,
            "_timeout": 2000,
            "file": "/tests/test.index.js",
            "uuid": "3cad57d0-8472-4da5-bbe3-725690b86fd0",
            "beforeHooks": [],
            "afterHooks": [],
            "fullFile": "/mnt/c/Users/sigmu/Code/lib-songbeamer/tests/test.index.js",
            "passes": [
              {
                "title": "UT03-02-01: string from json should match file",
                "fullTitle": "UT03: lib-songbeamer (full module) UT03-02: AblauftoFile UT03-02-01: string from json should match file",
                "timedOut": false,
                "duration": 15,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "fs.readFile('./tests/data/ablauf.json', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    var aj = JSON.parse(data)\n    lsb.json2Ablauf(aj, './tests/tmp/ablauf.col', function (err) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/ablauf.col', 'utf8', function (err, ablauftext) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            fs.readFile('./tests/tmp/ablauf.col', 'utf8', function (err, tmptext) {\n              if (err) {\n                done(new Error(err))\n              } else {\n                assert.equal(tmptext, ablauftext)\n                done()\n              }\n            })\n          }\n        })\n      }\n    })\n  }\n})",
                "err": {},
                "isRoot": false,
                "uuid": "97c88a34-0f9a-4a45-a77f-27c2073a9c99",
                "parentUUID": "3cad57d0-8472-4da5-bbe3-725690b86fd0",
                "isHook": false,
                "skipped": false
              }
            ],
            "failures": [],
            "skipped": [],
            "hasBeforeHooks": false,
            "hasAfterHooks": false,
            "hasTests": true,
            "hasSuites": false,
            "totalTests": 1,
            "totalPasses": 1,
            "totalFailures": 0,
            "totalPending": 0,
            "totalSkipped": 0,
            "hasPasses": true,
            "hasFailures": false,
            "hasPending": false,
            "hasSkipped": false,
            "duration": 15,
            "rootEmpty": false
          },
          {
            "title": "UT03-03: SongtoJson",
            "suites": [],
            "tests": [
              {
                "title": "UT03-03-01: json from file should match json",
                "fullTitle": "UT03: lib-songbeamer (full module) UT03-03: SongtoJson UT03-03-01: json from file should match json",
                "timedOut": false,
                "duration": 6,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "lsb.song2JSON('./tests/data/song.sng', function (err, json) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    fs.readFile('./tests/data/song.json', 'utf8', function (err, songjson) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        let sj = JSON.parse(songjson)\n        assert.deepEqual(json, sj)\n        done()\n      }\n    })\n  }\n})",
                "err": {},
                "isRoot": false,
                "uuid": "692da6da-5cf1-4850-aaf8-224e006ad433",
                "parentUUID": "34dafd85-5b4f-42dc-834c-14cf28b92b51",
                "isHook": false,
                "skipped": false
              }
            ],
            "pending": [],
            "root": false,
            "_timeout": 2000,
            "file": "/tests/test.index.js",
            "uuid": "34dafd85-5b4f-42dc-834c-14cf28b92b51",
            "beforeHooks": [],
            "afterHooks": [],
            "fullFile": "/mnt/c/Users/sigmu/Code/lib-songbeamer/tests/test.index.js",
            "passes": [
              {
                "title": "UT03-03-01: json from file should match json",
                "fullTitle": "UT03: lib-songbeamer (full module) UT03-03: SongtoJson UT03-03-01: json from file should match json",
                "timedOut": false,
                "duration": 6,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "lsb.song2JSON('./tests/data/song.sng', function (err, json) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    fs.readFile('./tests/data/song.json', 'utf8', function (err, songjson) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        let sj = JSON.parse(songjson)\n        assert.deepEqual(json, sj)\n        done()\n      }\n    })\n  }\n})",
                "err": {},
                "isRoot": false,
                "uuid": "692da6da-5cf1-4850-aaf8-224e006ad433",
                "parentUUID": "34dafd85-5b4f-42dc-834c-14cf28b92b51",
                "isHook": false,
                "skipped": false
              }
            ],
            "failures": [],
            "skipped": [],
            "hasBeforeHooks": false,
            "hasAfterHooks": false,
            "hasTests": true,
            "hasSuites": false,
            "totalTests": 1,
            "totalPasses": 1,
            "totalFailures": 0,
            "totalPending": 0,
            "totalSkipped": 0,
            "hasPasses": true,
            "hasFailures": false,
            "hasPending": false,
            "hasSkipped": false,
            "duration": 6,
            "rootEmpty": false
          },
          {
            "title": "UT03-04: SongtoFile",
            "suites": [],
            "tests": [
              {
                "title": "UT03-04-01: string from json should match file",
                "fullTitle": "UT03: lib-songbeamer (full module) UT03-04: SongtoFile UT03-04-01: string from json should match file",
                "timedOut": false,
                "duration": 7,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "fs.readFile('./tests/data/song.json', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    var sj = JSON.parse(data)\n    lsb.json2Song(sj, './tests/tmp/song.sng', function (err) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/song.sng', 'utf8', function (err, songtext) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            fs.readFile('./tests/tmp/song.sng', 'utf8', function (err, tmptext) {\n              if (err) {\n                done(new Error(err))\n              } else {\n                assert.equal(tmptext, songtext)\n                done()\n              }\n            })\n          }\n        })\n      }\n    })\n  }\n})",
                "err": {},
                "isRoot": false,
                "uuid": "96591df7-8b8f-4d1d-b1ad-7eadd6c05116",
                "parentUUID": "af5da200-fa98-4013-8519-e812f52a66c8",
                "isHook": false,
                "skipped": false
              }
            ],
            "pending": [],
            "root": false,
            "_timeout": 2000,
            "file": "/tests/test.index.js",
            "uuid": "af5da200-fa98-4013-8519-e812f52a66c8",
            "beforeHooks": [],
            "afterHooks": [],
            "fullFile": "/mnt/c/Users/sigmu/Code/lib-songbeamer/tests/test.index.js",
            "passes": [
              {
                "title": "UT03-04-01: string from json should match file",
                "fullTitle": "UT03: lib-songbeamer (full module) UT03-04: SongtoFile UT03-04-01: string from json should match file",
                "timedOut": false,
                "duration": 7,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "fs.readFile('./tests/data/song.json', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    var sj = JSON.parse(data)\n    lsb.json2Song(sj, './tests/tmp/song.sng', function (err) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/song.sng', 'utf8', function (err, songtext) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            fs.readFile('./tests/tmp/song.sng', 'utf8', function (err, tmptext) {\n              if (err) {\n                done(new Error(err))\n              } else {\n                assert.equal(tmptext, songtext)\n                done()\n              }\n            })\n          }\n        })\n      }\n    })\n  }\n})",
                "err": {},
                "isRoot": false,
                "uuid": "96591df7-8b8f-4d1d-b1ad-7eadd6c05116",
                "parentUUID": "af5da200-fa98-4013-8519-e812f52a66c8",
                "isHook": false,
                "skipped": false
              }
            ],
            "failures": [],
            "skipped": [],
            "hasBeforeHooks": false,
            "hasAfterHooks": false,
            "hasTests": true,
            "hasSuites": false,
            "totalTests": 1,
            "totalPasses": 1,
            "totalFailures": 0,
            "totalPending": 0,
            "totalSkipped": 0,
            "hasPasses": true,
            "hasFailures": false,
            "hasPending": false,
            "hasSkipped": false,
            "duration": 7,
            "rootEmpty": false
          }
        ],
        "tests": [],
        "pending": [],
        "root": false,
        "_timeout": 2000,
        "file": "/tests/test.index.js",
        "uuid": "3011de0e-4c74-4e1c-891b-bca15992b525",
        "beforeHooks": [],
        "afterHooks": [],
        "fullFile": "/mnt/c/Users/sigmu/Code/lib-songbeamer/tests/test.index.js",
        "passes": [],
        "failures": [],
        "skipped": [],
        "hasBeforeHooks": false,
        "hasAfterHooks": false,
        "hasTests": false,
        "hasSuites": true,
        "totalTests": 0,
        "totalPasses": 0,
        "totalFailures": 0,
        "totalPending": 0,
        "totalSkipped": 0,
        "hasPasses": false,
        "hasFailures": false,
        "hasPending": false,
        "hasSkipped": false,
        "duration": 0,
        "rootEmpty": false
      },
      {
        "title": "UT01: lib-song",
        "suites": [
          {
            "title": "UT01-01: toJson",
            "suites": [],
            "tests": [
              {
                "title": "UT01-01-01: json from file should match json",
                "fullTitle": "UT01: lib-song UT01-01: toJson UT01-01-01: json from file should match json",
                "timedOut": false,
                "duration": 4,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "fs.readFile('./tests/data/song.sng', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    song.toJSON(data, function (err, json) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/song.json', 'utf8', function (err, songjson) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            let sj = JSON.parse(songjson)\n            assert.deepEqual(json, sj)\n            done()\n          }\n        })\n      }\n    })\n  }\n})",
                "err": {},
                "isRoot": false,
                "uuid": "dc02fb53-0362-4134-974b-5b626d8bca32",
                "parentUUID": "a02f3c55-4320-4146-98a6-a97af459a6c6",
                "isHook": false,
                "skipped": false
              }
            ],
            "pending": [],
            "root": false,
            "_timeout": 2000,
            "file": "/tests/test.song.js",
            "uuid": "a02f3c55-4320-4146-98a6-a97af459a6c6",
            "beforeHooks": [],
            "afterHooks": [],
            "fullFile": "/mnt/c/Users/sigmu/Code/lib-songbeamer/tests/test.song.js",
            "passes": [
              {
                "title": "UT01-01-01: json from file should match json",
                "fullTitle": "UT01: lib-song UT01-01: toJson UT01-01-01: json from file should match json",
                "timedOut": false,
                "duration": 4,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "fs.readFile('./tests/data/song.sng', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    song.toJSON(data, function (err, json) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/song.json', 'utf8', function (err, songjson) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            let sj = JSON.parse(songjson)\n            assert.deepEqual(json, sj)\n            done()\n          }\n        })\n      }\n    })\n  }\n})",
                "err": {},
                "isRoot": false,
                "uuid": "dc02fb53-0362-4134-974b-5b626d8bca32",
                "parentUUID": "a02f3c55-4320-4146-98a6-a97af459a6c6",
                "isHook": false,
                "skipped": false
              }
            ],
            "failures": [],
            "skipped": [],
            "hasBeforeHooks": false,
            "hasAfterHooks": false,
            "hasTests": true,
            "hasSuites": false,
            "totalTests": 1,
            "totalPasses": 1,
            "totalFailures": 0,
            "totalPending": 0,
            "totalSkipped": 0,
            "hasPasses": true,
            "hasFailures": false,
            "hasPending": false,
            "hasSkipped": false,
            "duration": 4,
            "rootEmpty": false
          },
          {
            "title": "UT01-02: toFile",
            "suites": [],
            "tests": [
              {
                "title": "UT01-02-01: string from json should match file",
                "fullTitle": "UT01: lib-song UT01-02: toFile UT01-02-01: string from json should match file",
                "timedOut": false,
                "duration": 2,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "fs.readFile('./tests/data/song.json', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    var sj = JSON.parse(data)\n    song.toFile(sj, function (err, text) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/song.sng', 'utf8', function (err, songtext) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            assert.equal(text, songtext)\n            done()\n          }\n        })\n      }\n    })\n  }\n})",
                "err": {},
                "isRoot": false,
                "uuid": "65536dbc-3549-4631-8300-d5bc315511a4",
                "parentUUID": "430a40bd-b742-4ef5-87f4-8fdb2288ed1b",
                "isHook": false,
                "skipped": false
              }
            ],
            "pending": [],
            "root": false,
            "_timeout": 2000,
            "file": "/tests/test.song.js",
            "uuid": "430a40bd-b742-4ef5-87f4-8fdb2288ed1b",
            "beforeHooks": [],
            "afterHooks": [],
            "fullFile": "/mnt/c/Users/sigmu/Code/lib-songbeamer/tests/test.song.js",
            "passes": [
              {
                "title": "UT01-02-01: string from json should match file",
                "fullTitle": "UT01: lib-song UT01-02: toFile UT01-02-01: string from json should match file",
                "timedOut": false,
                "duration": 2,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "fs.readFile('./tests/data/song.json', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    var sj = JSON.parse(data)\n    song.toFile(sj, function (err, text) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/song.sng', 'utf8', function (err, songtext) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            assert.equal(text, songtext)\n            done()\n          }\n        })\n      }\n    })\n  }\n})",
                "err": {},
                "isRoot": false,
                "uuid": "65536dbc-3549-4631-8300-d5bc315511a4",
                "parentUUID": "430a40bd-b742-4ef5-87f4-8fdb2288ed1b",
                "isHook": false,
                "skipped": false
              }
            ],
            "failures": [],
            "skipped": [],
            "hasBeforeHooks": false,
            "hasAfterHooks": false,
            "hasTests": true,
            "hasSuites": false,
            "totalTests": 1,
            "totalPasses": 1,
            "totalFailures": 0,
            "totalPending": 0,
            "totalSkipped": 0,
            "hasPasses": true,
            "hasFailures": false,
            "hasPending": false,
            "hasSkipped": false,
            "duration": 2,
            "rootEmpty": false
          }
        ],
        "tests": [],
        "pending": [],
        "root": false,
        "_timeout": 2000,
        "file": "/tests/test.song.js",
        "uuid": "0bca5ebb-7bcd-4b93-81d7-2f451e4db7c4",
        "beforeHooks": [],
        "afterHooks": [],
        "fullFile": "/mnt/c/Users/sigmu/Code/lib-songbeamer/tests/test.song.js",
        "passes": [],
        "failures": [],
        "skipped": [],
        "hasBeforeHooks": false,
        "hasAfterHooks": false,
        "hasTests": false,
        "hasSuites": true,
        "totalTests": 0,
        "totalPasses": 0,
        "totalFailures": 0,
        "totalPending": 0,
        "totalSkipped": 0,
        "hasPasses": false,
        "hasFailures": false,
        "hasPending": false,
        "hasSkipped": false,
        "duration": 0,
        "rootEmpty": false
      }
    ],
    "tests": [],
    "pending": [],
    "root": true,
    "_timeout": 2000,
    "uuid": "8f6457ce-e08f-4b42-adaa-24aa40054ff6",
    "beforeHooks": [],
    "afterHooks": [],
    "fullFile": "",
    "file": "",
    "passes": [],
    "failures": [],
    "skipped": [],
    "hasBeforeHooks": false,
    "hasAfterHooks": false,
    "hasTests": false,
    "hasSuites": true,
    "totalTests": 0,
    "totalPasses": 0,
    "totalFailures": 0,
    "totalPending": 0,
    "totalSkipped": 0,
    "hasPasses": false,
    "hasFailures": false,
    "hasPending": false,
    "hasSkipped": false,
    "duration": 0,
    "rootEmpty": true
  },
  "allTests": [
    {
      "title": "UT02-01-01: json from file should match json",
      "fullTitle": "UT02-01: toJson UT02-01-01: json from file should match json",
      "timedOut": false,
      "duration": 13,
      "state": "passed",
      "speed": "fast",
      "pass": true,
      "fail": false,
      "pending": false,
      "code": "fs.readFile('./tests/data/ablauf.col', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    ablauf.toJSON(data, function (err, json) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/ablauf.json', 'utf8', function (err, ablaufjson) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            let aj = JSON.parse(ablaufjson)\n            assert.deepEqual(json, aj.items)\n            done()\n          }\n        })\n      }\n    })\n  }\n})",
      "err": {},
      "isRoot": false,
      "uuid": "5934ebd9-9ac0-4c3b-9a9c-6af2beac5e4b",
      "parentUUID": "86edb984-5746-427f-8d7e-b9d303ceec6e",
      "isHook": false,
      "skipped": false
    },
    {
      "title": "UT02-02-01: string from json should match file",
      "fullTitle": "UT02-02: toFile UT02-02-01: string from json should match file",
      "timedOut": false,
      "duration": 3,
      "state": "passed",
      "speed": "fast",
      "pass": true,
      "fail": false,
      "pending": false,
      "code": "fs.readFile('./tests/data/ablauf.json', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    var aj = JSON.parse(data)\n    ablauf.toFile(aj.items, function (err, text) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/ablauf.col', 'utf8', function (err, ablauftext) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            assert.equal(text, ablauftext)\n            done()\n          }\n        })\n      }\n    })\n  }\n})",
      "err": {},
      "isRoot": false,
      "uuid": "6b27cba2-caed-4928-b8cc-f64a7cc5e1a0",
      "parentUUID": "28520a7a-5312-43a3-9901-d90bd412f290",
      "isHook": false,
      "skipped": false
    },
    {
      "title": "UT03-01-01: json from file should match json",
      "fullTitle": "UT03-01: AblauftoJson UT03-01-01: json from file should match json",
      "timedOut": false,
      "duration": 3,
      "state": "passed",
      "speed": "fast",
      "pass": true,
      "fail": false,
      "pending": false,
      "code": "lsb.ablauf2JSON('./tests/data/ablauf.col', function (err, json) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    fs.readFile('./tests/data/ablauf.json', 'utf8', function (err, ablaufjson) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        let aj = JSON.parse(ablaufjson)\n        assert.deepEqual(json, aj)\n        done()\n      }\n    })\n  }\n})",
      "err": {},
      "isRoot": false,
      "uuid": "1b89621d-3ade-4485-bd92-65204668f4ed",
      "parentUUID": "6a92b1ea-8dfa-4ced-b47d-73b5fb1b051e",
      "isHook": false,
      "skipped": false
    },
    {
      "title": "UT03-02-01: string from json should match file",
      "fullTitle": "UT03-02: AblauftoFile UT03-02-01: string from json should match file",
      "timedOut": false,
      "duration": 15,
      "state": "passed",
      "speed": "fast",
      "pass": true,
      "fail": false,
      "pending": false,
      "code": "fs.readFile('./tests/data/ablauf.json', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    var aj = JSON.parse(data)\n    lsb.json2Ablauf(aj, './tests/tmp/ablauf.col', function (err) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/ablauf.col', 'utf8', function (err, ablauftext) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            fs.readFile('./tests/tmp/ablauf.col', 'utf8', function (err, tmptext) {\n              if (err) {\n                done(new Error(err))\n              } else {\n                assert.equal(tmptext, ablauftext)\n                done()\n              }\n            })\n          }\n        })\n      }\n    })\n  }\n})",
      "err": {},
      "isRoot": false,
      "uuid": "97c88a34-0f9a-4a45-a77f-27c2073a9c99",
      "parentUUID": "3cad57d0-8472-4da5-bbe3-725690b86fd0",
      "isHook": false,
      "skipped": false
    },
    {
      "title": "UT03-03-01: json from file should match json",
      "fullTitle": "UT03-03: SongtoJson UT03-03-01: json from file should match json",
      "timedOut": false,
      "duration": 6,
      "state": "passed",
      "speed": "fast",
      "pass": true,
      "fail": false,
      "pending": false,
      "code": "lsb.song2JSON('./tests/data/song.sng', function (err, json) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    fs.readFile('./tests/data/song.json', 'utf8', function (err, songjson) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        let sj = JSON.parse(songjson)\n        assert.deepEqual(json, sj)\n        done()\n      }\n    })\n  }\n})",
      "err": {},
      "isRoot": false,
      "uuid": "692da6da-5cf1-4850-aaf8-224e006ad433",
      "parentUUID": "34dafd85-5b4f-42dc-834c-14cf28b92b51",
      "isHook": false,
      "skipped": false
    },
    {
      "title": "UT03-04-01: string from json should match file",
      "fullTitle": "UT03-04: SongtoFile UT03-04-01: string from json should match file",
      "timedOut": false,
      "duration": 7,
      "state": "passed",
      "speed": "fast",
      "pass": true,
      "fail": false,
      "pending": false,
      "code": "fs.readFile('./tests/data/song.json', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    var sj = JSON.parse(data)\n    lsb.json2Song(sj, './tests/tmp/song.sng', function (err) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/song.sng', 'utf8', function (err, songtext) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            fs.readFile('./tests/tmp/song.sng', 'utf8', function (err, tmptext) {\n              if (err) {\n                done(new Error(err))\n              } else {\n                assert.equal(tmptext, songtext)\n                done()\n              }\n            })\n          }\n        })\n      }\n    })\n  }\n})",
      "err": {},
      "isRoot": false,
      "uuid": "96591df7-8b8f-4d1d-b1ad-7eadd6c05116",
      "parentUUID": "af5da200-fa98-4013-8519-e812f52a66c8",
      "isHook": false,
      "skipped": false
    },
    {
      "title": "UT01-01-01: json from file should match json",
      "fullTitle": "UT01-01: toJson UT01-01-01: json from file should match json",
      "timedOut": false,
      "duration": 4,
      "state": "passed",
      "speed": "fast",
      "pass": true,
      "fail": false,
      "pending": false,
      "code": "fs.readFile('./tests/data/song.sng', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    song.toJSON(data, function (err, json) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/song.json', 'utf8', function (err, songjson) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            let sj = JSON.parse(songjson)\n            assert.deepEqual(json, sj)\n            done()\n          }\n        })\n      }\n    })\n  }\n})",
      "err": {},
      "isRoot": false,
      "uuid": "dc02fb53-0362-4134-974b-5b626d8bca32",
      "parentUUID": "a02f3c55-4320-4146-98a6-a97af459a6c6",
      "isHook": false,
      "skipped": false
    },
    {
      "title": "UT01-02-01: string from json should match file",
      "fullTitle": "UT01-02: toFile UT01-02-01: string from json should match file",
      "timedOut": false,
      "duration": 2,
      "state": "passed",
      "speed": "fast",
      "pass": true,
      "fail": false,
      "pending": false,
      "code": "fs.readFile('./tests/data/song.json', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    var sj = JSON.parse(data)\n    song.toFile(sj, function (err, text) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/song.sng', 'utf8', function (err, songtext) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            assert.equal(text, songtext)\n            done()\n          }\n        })\n      }\n    })\n  }\n})",
      "err": {},
      "isRoot": false,
      "uuid": "65536dbc-3549-4631-8300-d5bc315511a4",
      "parentUUID": "430a40bd-b742-4ef5-87f4-8fdb2288ed1b",
      "isHook": false,
      "skipped": false
    }
  ],
  "allPending": [],
  "allPasses": [
    {
      "title": "UT02-01-01: json from file should match json",
      "fullTitle": "UT02-01: toJson UT02-01-01: json from file should match json",
      "timedOut": false,
      "duration": 13,
      "state": "passed",
      "speed": "fast",
      "pass": true,
      "fail": false,
      "pending": false,
      "code": "fs.readFile('./tests/data/ablauf.col', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    ablauf.toJSON(data, function (err, json) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/ablauf.json', 'utf8', function (err, ablaufjson) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            let aj = JSON.parse(ablaufjson)\n            assert.deepEqual(json, aj.items)\n            done()\n          }\n        })\n      }\n    })\n  }\n})",
      "err": {},
      "isRoot": false,
      "uuid": "5934ebd9-9ac0-4c3b-9a9c-6af2beac5e4b",
      "parentUUID": "86edb984-5746-427f-8d7e-b9d303ceec6e",
      "isHook": false,
      "skipped": false
    },
    {
      "title": "UT02-02-01: string from json should match file",
      "fullTitle": "UT02-02: toFile UT02-02-01: string from json should match file",
      "timedOut": false,
      "duration": 3,
      "state": "passed",
      "speed": "fast",
      "pass": true,
      "fail": false,
      "pending": false,
      "code": "fs.readFile('./tests/data/ablauf.json', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    var aj = JSON.parse(data)\n    ablauf.toFile(aj.items, function (err, text) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/ablauf.col', 'utf8', function (err, ablauftext) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            assert.equal(text, ablauftext)\n            done()\n          }\n        })\n      }\n    })\n  }\n})",
      "err": {},
      "isRoot": false,
      "uuid": "6b27cba2-caed-4928-b8cc-f64a7cc5e1a0",
      "parentUUID": "28520a7a-5312-43a3-9901-d90bd412f290",
      "isHook": false,
      "skipped": false
    },
    {
      "title": "UT03-01-01: json from file should match json",
      "fullTitle": "UT03-01: AblauftoJson UT03-01-01: json from file should match json",
      "timedOut": false,
      "duration": 3,
      "state": "passed",
      "speed": "fast",
      "pass": true,
      "fail": false,
      "pending": false,
      "code": "lsb.ablauf2JSON('./tests/data/ablauf.col', function (err, json) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    fs.readFile('./tests/data/ablauf.json', 'utf8', function (err, ablaufjson) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        let aj = JSON.parse(ablaufjson)\n        assert.deepEqual(json, aj)\n        done()\n      }\n    })\n  }\n})",
      "err": {},
      "isRoot": false,
      "uuid": "1b89621d-3ade-4485-bd92-65204668f4ed",
      "parentUUID": "6a92b1ea-8dfa-4ced-b47d-73b5fb1b051e",
      "isHook": false,
      "skipped": false
    },
    {
      "title": "UT03-02-01: string from json should match file",
      "fullTitle": "UT03-02: AblauftoFile UT03-02-01: string from json should match file",
      "timedOut": false,
      "duration": 15,
      "state": "passed",
      "speed": "fast",
      "pass": true,
      "fail": false,
      "pending": false,
      "code": "fs.readFile('./tests/data/ablauf.json', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    var aj = JSON.parse(data)\n    lsb.json2Ablauf(aj, './tests/tmp/ablauf.col', function (err) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/ablauf.col', 'utf8', function (err, ablauftext) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            fs.readFile('./tests/tmp/ablauf.col', 'utf8', function (err, tmptext) {\n              if (err) {\n                done(new Error(err))\n              } else {\n                assert.equal(tmptext, ablauftext)\n                done()\n              }\n            })\n          }\n        })\n      }\n    })\n  }\n})",
      "err": {},
      "isRoot": false,
      "uuid": "97c88a34-0f9a-4a45-a77f-27c2073a9c99",
      "parentUUID": "3cad57d0-8472-4da5-bbe3-725690b86fd0",
      "isHook": false,
      "skipped": false
    },
    {
      "title": "UT03-03-01: json from file should match json",
      "fullTitle": "UT03-03: SongtoJson UT03-03-01: json from file should match json",
      "timedOut": false,
      "duration": 6,
      "state": "passed",
      "speed": "fast",
      "pass": true,
      "fail": false,
      "pending": false,
      "code": "lsb.song2JSON('./tests/data/song.sng', function (err, json) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    fs.readFile('./tests/data/song.json', 'utf8', function (err, songjson) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        let sj = JSON.parse(songjson)\n        assert.deepEqual(json, sj)\n        done()\n      }\n    })\n  }\n})",
      "err": {},
      "isRoot": false,
      "uuid": "692da6da-5cf1-4850-aaf8-224e006ad433",
      "parentUUID": "34dafd85-5b4f-42dc-834c-14cf28b92b51",
      "isHook": false,
      "skipped": false
    },
    {
      "title": "UT03-04-01: string from json should match file",
      "fullTitle": "UT03-04: SongtoFile UT03-04-01: string from json should match file",
      "timedOut": false,
      "duration": 7,
      "state": "passed",
      "speed": "fast",
      "pass": true,
      "fail": false,
      "pending": false,
      "code": "fs.readFile('./tests/data/song.json', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    var sj = JSON.parse(data)\n    lsb.json2Song(sj, './tests/tmp/song.sng', function (err) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/song.sng', 'utf8', function (err, songtext) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            fs.readFile('./tests/tmp/song.sng', 'utf8', function (err, tmptext) {\n              if (err) {\n                done(new Error(err))\n              } else {\n                assert.equal(tmptext, songtext)\n                done()\n              }\n            })\n          }\n        })\n      }\n    })\n  }\n})",
      "err": {},
      "isRoot": false,
      "uuid": "96591df7-8b8f-4d1d-b1ad-7eadd6c05116",
      "parentUUID": "af5da200-fa98-4013-8519-e812f52a66c8",
      "isHook": false,
      "skipped": false
    },
    {
      "title": "UT01-01-01: json from file should match json",
      "fullTitle": "UT01-01: toJson UT01-01-01: json from file should match json",
      "timedOut": false,
      "duration": 4,
      "state": "passed",
      "speed": "fast",
      "pass": true,
      "fail": false,
      "pending": false,
      "code": "fs.readFile('./tests/data/song.sng', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    song.toJSON(data, function (err, json) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/song.json', 'utf8', function (err, songjson) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            let sj = JSON.parse(songjson)\n            assert.deepEqual(json, sj)\n            done()\n          }\n        })\n      }\n    })\n  }\n})",
      "err": {},
      "isRoot": false,
      "uuid": "dc02fb53-0362-4134-974b-5b626d8bca32",
      "parentUUID": "a02f3c55-4320-4146-98a6-a97af459a6c6",
      "isHook": false,
      "skipped": false
    },
    {
      "title": "UT01-02-01: string from json should match file",
      "fullTitle": "UT01-02: toFile UT01-02-01: string from json should match file",
      "timedOut": false,
      "duration": 2,
      "state": "passed",
      "speed": "fast",
      "pass": true,
      "fail": false,
      "pending": false,
      "code": "fs.readFile('./tests/data/song.json', 'utf8', function (err, data) {\n  if (err) {\n    done(new Error(err))\n  } else {\n    var sj = JSON.parse(data)\n    song.toFile(sj, function (err, text) {\n      if (err) {\n        done(new Error(err))\n      } else {\n        fs.readFile('./tests/data/song.sng', 'utf8', function (err, songtext) {\n          if (err) {\n            done(new Error(err))\n          } else {\n            assert.equal(text, songtext)\n            done()\n          }\n        })\n      }\n    })\n  }\n})",
      "err": {},
      "isRoot": false,
      "uuid": "65536dbc-3549-4631-8300-d5bc315511a4",
      "parentUUID": "430a40bd-b742-4ef5-87f4-8fdb2288ed1b",
      "isHook": false,
      "skipped": false
    }
  ],
  "allFailures": [],
  "copyrightYear": 2018
}