/*jshint esversion: 6 */ import { strict as assert } from 'assert'; import {parse} from '../src/parser.js' const TEXT = ` 00:40 The Coders - Hello World 12:23 This is not the end Something else in the middle 1:23:11 Not the last song 01. Screens 0:00 - 5:40 02. Inharmonious Slog 5:40 - 10:11 03. The Everyday Push 10:11 - 15:46 04. Storm 15:46 - 19:07 05. Outre Lux 19:07 - 23:11 06. Balsam Massacre 23:11 - 26:24 07. Eco Friend 26:24 - 32:15 08. Off-Piste 32:15 - 36:53 09. Aura 36:53 - 41:44 10. Bombogenesis 41:44 - 48:20 Hello World 48:20 50:23 Bye World `; const TEXT_WITH_ARTIST = '12:23 Rolling Stones - Hello World'; describe('Parser', function() { var big_result; before(function() { big_result = parse(TEXT) }); it('should find all timestamps', function() { assert.equal(big_result.length, 15); }); it('should find artist names', function() { let result = parse(TEXT_WITH_ARTIST); assert.equal(result[0].artist, 'Rolling Stones'); }); it('should find track numbers', function() { assert.equal(big_result[3].track, 1) assert.equal(big_result[4].track, 2) assert.equal(big_result[5].track, 3) assert.equal(big_result[6].track, 4) assert.equal(big_result[7].track, 5) assert.equal(big_result[8].track, 6) assert.equal(big_result[9].track, 7) assert.equal(big_result[10].track, 8) assert.equal(big_result[11].track, 9) assert.equal(big_result[12].track, 10) }) it('should ensure ending timestamps for all', function() { assert.deepEqual(big_result[13].end, {calc: 3023, hh:0, mm:50, ss:23, ts: '00:50:23'}) // TODO assert.deepEqual(big_result[14].end, null) }) it('should parse taylor swift', function() { let result = parse(`0:00 the 1 3:29 cardigan 9:30 the last great american dynasty 11:56 exile 16:46 my tears ricochet 21:03 mirrorball 24:35 seven 28:07 august 32:30 this is me trying 35:52 illicit affairs 39:05 invisible strings 43:22 mad woman 49:30 epiphany 52:17 betty 57:15 peace 1:01:10 hoax 1:04:50 the lakes`) assert.deepEqual(result, [ { artist: 'Unknown', title: 'the 1', track: 1, start: { ts: '00:0:00', hh: 0, mm: 0, ss: 0, calc: 0 }, end: { ts: '00:3:29', hh: 0, mm: 3, ss: 29, calc: 209 }, _: { left_text: '', right_text: 'the 1' } }, { artist: 'Unknown', title: 'cardigan', track: 2, start: { ts: '00:3:29', hh: 0, mm: 3, ss: 29, calc: 209 }, end: { ts: '00:9:30', hh: 0, mm: 9, ss: 30, calc: 570 }, _: { left_text: '', right_text: 'cardigan' } }, { artist: 'Unknown', title: 'the last great american dynasty', track: 3, start: { ts: '00:9:30', hh: 0, mm: 9, ss: 30, calc: 570 }, end: { ts: '00:11:56', hh: 0, mm: 11, ss: 56, calc: 716 }, _: { left_text: '', right_text: 'the last great american dynasty' } }, { artist: 'Unknown', title: 'exile', track: 4, start: { ts: '00:11:56', hh: 0, mm: 11, ss: 56, calc: 716 }, end: { ts: '00:16:46', hh: 0, mm: 16, ss: 46, calc: 1006 }, _: { left_text: '', right_text: 'exile' } }, { artist: 'Unknown', title: 'my tears ricochet', track: 5, start: { ts: '00:16:46', hh: 0, mm: 16, ss: 46, calc: 1006 }, end: { ts: '00:21:03', hh: 0, mm: 21, ss: 3, calc: 1263 }, _: { left_text: '', right_text: 'my tears ricochet' } }, { artist: 'Unknown', title: 'mirrorball', track: 6, start: { ts: '00:21:03', hh: 0, mm: 21, ss: 3, calc: 1263 }, end: { ts: '00:24:35', hh: 0, mm: 24, ss: 35, calc: 1475 }, _: { left_text: '', right_text: 'mirrorball' } }, { artist: 'Unknown', title: 'seven', track: 7, start: { ts: '00:24:35', hh: 0, mm: 24, ss: 35, calc: 1475 }, end: { ts: '00:28:07', hh: 0, mm: 28, ss: 7, calc: 1687 }, _: { left_text: '', right_text: 'seven' } }, { artist: 'Unknown', title: 'august', track: 8, start: { ts: '00:28:07', hh: 0, mm: 28, ss: 7, calc: 1687 }, end: { ts: '00:32:30', hh: 0, mm: 32, ss: 30, calc: 1950 }, _: { left_text: '', right_text: 'august' } }, { artist: 'Unknown', title: 'this is me trying', track: 9, start: { ts: '00:32:30', hh: 0, mm: 32, ss: 30, calc: 1950 }, end: { ts: '00:35:52', hh: 0, mm: 35, ss: 52, calc: 2152 }, _: { left_text: '', right_text: 'this is me trying' } }, { artist: 'Unknown', title: 'illicit affairs', track: 10, start: { ts: '00:35:52', hh: 0, mm: 35, ss: 52, calc: 2152 }, end: { ts: '00:39:05', hh: 0, mm: 39, ss: 5, calc: 2345 }, _: { left_text: '', right_text: 'illicit affairs' } }, { artist: 'Unknown', title: 'invisible strings', track: 11, start: { ts: '00:39:05', hh: 0, mm: 39, ss: 5, calc: 2345 }, end: { ts: '00:43:22', hh: 0, mm: 43, ss: 22, calc: 2602 }, _: { left_text: '', right_text: 'invisible strings' } }, { artist: 'Unknown', title: 'mad woman', track: 12, start: { ts: '00:43:22', hh: 0, mm: 43, ss: 22, calc: 2602 }, end: { ts: '00:49:30', hh: 0, mm: 49, ss: 30, calc: 2970 }, _: { left_text: '', right_text: 'mad woman' } }, { artist: 'Unknown', title: 'epiphany', track: 13, start: { ts: '00:49:30', hh: 0, mm: 49, ss: 30, calc: 2970 }, end: { ts: '00:52:17', hh: 0, mm: 52, ss: 17, calc: 3137 }, _: { left_text: '', right_text: 'epiphany' } }, { artist: 'Unknown', title: 'betty', track: 14, start: { ts: '00:52:17', hh: 0, mm: 52, ss: 17, calc: 3137 }, end: { ts: '00:57:15', hh: 0, mm: 57, ss: 15, calc: 3435 }, _: { left_text: '', right_text: 'betty' } }, { artist: 'Unknown', title: 'peace', track: 15, start: { ts: '00:57:15', hh: 0, mm: 57, ss: 15, calc: 3435 }, end: { ts: '1:01:10', hh: 1, mm: 1, ss: 10, calc: 3670 }, _: { left_text: '', right_text: 'peace' } }, { artist: 'Unknown', title: 'hoax', track: 16, start: { ts: '1:01:10', hh: 1, mm: 1, ss: 10, calc: 3670 }, end: { ts: '1:04:50', hh: 1, mm: 4, ss: 50, calc: 3890 }, _: { left_text: '', right_text: 'hoax' } }, { artist: 'Unknown', title: 'the lakes', track: 17, start: { ts: '1:04:50', hh: 1, mm: 4, ss: 50, calc: 3890 }, end: null, _: { left_text: '', right_text: 'the lakes' } } ]); }) });