const parseM3U = require("../radiomanifest.js").parsers.M3U; const chai = require("chai"); chai.use(require("chai-as-promised")); const assert = chai.assert; const expect = chai.expect; describe("parseM3U parses basic M3U", () => { describe("empty M3U", () => { it("should return empty list", () => { var r = parseM3U(""); assert.equal(r.length, 0); }); it("should discard empty lines", () => { var r = parseM3U("\n\n\n"); assert.equal(r.length, 0); }); }); describe("just some lines", () => { it("should return appropriate list", () => { var r = parseM3U("http://foo"); assert.equal(r.length, 1); assert.equal(r[0], "http://foo"); }); it("should work with longer list", () => { var r = parseM3U("http://foo\nhttp://baz\nhttp://bar\n"); assert.equal(r.length, 3); assert.equal(r[0], "http://foo"); assert.equal(r[1], "http://baz"); assert.equal(r[2], "http://bar"); }); it("should discard empty lines", () => { var r = parseM3U("http://foo\n\nhttp://baz\nhttp://bar\n\n\n"); assert.equal(r.length, 3); assert.equal(r[0], "http://foo"); assert.equal(r[1], "http://baz"); assert.equal(r[2], "http://bar"); }); }); describe("comments", () => { it("comments should be ignored", () => { var r = parseM3U("http://foo\n#asd"); assert.equal(r.length, 1); assert.equal(r[0], "http://foo"); }); it("mid-line hash is not a comment", () => { var r = parseM3U("http://foo#asd"); assert.equal(r.length, 1); assert.equal(r[0], "http://foo#asd"); }); }); });