import 'mocha' import { assert } from 'chai' import { getParseTreeFromString } from './helpers'; describe("Parsability tests", function() { describe("Parsable RDF strings", function() { describe("range", function() { var passing_runs = [ { rdf: "$range$0$0$", desc: "epoch to epoch" }, { rdf: "$range$0$now$", desc: "epoch to now" }, { rdf: "$range$now$now$", desc: "now to now" }, { rdf: "$range$0-1s$0+1s$", desc: "second offsets" }, { rdf: "$range$0-1m$0+1m$", desc: "minute offsets" }, { rdf: "$range$0-1h$0+1h$", desc: "hour offsets" }, { rdf: "$range$0-1d$0+1d$", desc: "day offsets" }, { rdf: "$range$0-1w$0+1w$", desc: "week offsets" }, { rdf: "$range$0-1M$0+1M$", desc: "month offsets" }, { rdf: "$range$0-1Q$0+1Q$", desc: "quarter offsets" }, { rdf: "$range$0-1Y$0+1Y$", desc: "year offsets" }, { rdf: "$range$0-1s+1m$0+1s-1m$", desc: "composite static offsets" }, { rdf: "$range$0-1s+1M$0+1s-1M$", desc: "composite static/relative offsets" }, { rdf: "$range$1020$174398127390$", desc: "long numbers" }, ] for(let run of passing_runs) { it(`${run.rdf.replace(/\n/g,"\\n")}: ${run.desc} should parse a valid directive`, function(){ getParseTreeFromString(run.rdf) }) } }) describe("trail", function() { var passing_runs = [ { rdf: "$trail$0$0$", desc: "epoch by none" }, { rdf: "$trail$0$now$", desc: "epoch by now" }, // weird case where timestamps can also be used as deltas { rdf: "$trail$now$now$", desc: "now to now" }, // weird case where timestamps can also be used as deltas { rdf: "$trail$0-1s$0+1s$", desc: "second offsets" }, { rdf: "$trail$0-1m$0+1m$", desc: "minute offsets" }, { rdf: "$trail$0-1h$0+1h$", desc: "hour offsets" }, { rdf: "$trail$0-1d$0+1d$", desc: "day offsets" }, { rdf: "$trail$0-1w$0+1w$", desc: "week offsets" }, { rdf: "$trail$0-1M$0+1M$", desc: "month offsets" }, { rdf: "$trail$0-1Q$0+1Q$", desc: "quarter offsets" }, { rdf: "$trail$0-1Y$0+1Y$", desc: "year offsets" }, { rdf: "$trail$0$1s$", desc: "static period in seconds" }, { rdf: "$trail$0$1m$", desc: "static period in minutes" }, { rdf: "$trail$0$1h$", desc: "static period in hours" }, { rdf: "$trail$0$1d$", desc: "static period in days" }, { rdf: "$trail$0$1w$", desc: "static period in weeks" }, { rdf: "$trail$0$1M$", desc: "fully relative period in months" }, { rdf: "$trail$0$1Q$", desc: "fully relative period in quarters" }, { rdf: "$trail$0$1Y$", desc: "fully relative period in years" }, { rdf: "$trail$0-1s+1m$0+1s-1m$", desc: "composite static offsets" }, { rdf: "$trail$0-1s+1M$0+1s-1M$", desc: "composite static/relative offsets" }, { rdf: "$trail$1020$174398127390$", desc: "long numbers" }, ] for(let run of passing_runs) { it(`${run.rdf.replace(/\n/g,"\\n")}: ${run.desc} should parse a valid directive`, function(){ getParseTreeFromString(run.rdf) }) } }) }) describe("Invalid RDF strings", function(){ var failing_runs = [ { rdf: "$range$0$0", desc: "missing seperator" }, { rdf: "$range$0$01s", desc: "no operator in static comparison" }, { rdf: "$range$0$01Q", desc: "no operator in relative comparison" }, ] for (let run of failing_runs) { it(`${run.rdf.replace(/\n/g,"\\n")}: should fail to parse a valid directive - ${run.desc}`, function(){ assert.throws(() => { getParseTreeFromString(run.rdf) }, Error) }) } }) })