diff --git a/coverage/clover.xml b/coverage/clover.xml new file mode 100644 index 0000000000000000000000000000000000000000..85d4dea2554ca31daeff0c1c9a5f7424850e3001 --- /dev/null +++ b/coverage/clover.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<coverage generated="1517488546994" clover="3.2.0"> + <project timestamp="1517488546994" name="All files"> + <metrics statements="0" coveredstatements="0" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0" elements="0" coveredelements="0" complexity="0" loc="0" ncloc="0" packages="0" files="0" classes="0"> + </metrics> + </project> +</coverage> diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json new file mode 100644 index 0000000000000000000000000000000000000000..0967ef424bce6791893e9a57bb952f80fd536e93 --- /dev/null +++ b/coverage/coverage-final.json @@ -0,0 +1 @@ +{} diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css new file mode 100644 index 0000000000000000000000000000000000000000..d165025a93a2913f16acdfb7188d0263add56b1c --- /dev/null +++ b/coverage/lcov-report/base.css @@ -0,0 +1,338 @@ +body, +html { + margin: 0; + padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color: #333; +} +.small { + font-size: 12px; +} +*, +*:after, +*:before { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +h1 { + font-size: 20px; + margin: 0; +} +h2 { + font-size: 14px; +} +pre { + font: 12px/1.4 Consolas, 'Liberation Mono', Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { + color: #0074d9; + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +.strong { + font-weight: bold; +} +.space-top1 { + padding: 10px 0 0 0; +} +.pad2y { + padding: 20px 0; +} +.pad1y { + padding: 10px 0; +} +.pad2x { + padding: 0 20px; +} +.pad2 { + padding: 20px; +} +.pad1 { + padding: 10px; +} +.space-left2 { + padding-left: 55px; +} +.space-right2 { + padding-right: 20px; +} +.center { + text-align: center; +} +.clearfix { + display: block; +} +.clearfix:after { + content: ''; + display: block; + height: 0; + clear: both; + visibility: hidden; +} +.fl { + float: left; +} +@media only screen and (max-width: 640px) { + .col3 { + width: 100%; + max-width: 100%; + } + .hide-mobile { + display: none !important; + } +} + +.quiet { + color: #7f7f7f; + color: rgba(0, 0, 0, 0.5); +} +.quiet a { + opacity: 0.7; +} + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #e8e8e8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, +div.path a:visited { + color: #333; +} +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width: 20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, +.skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { + border-bottom: 1px solid #bbb; +} +.keyline-all { + border: 1px solid #ddd; +} +.coverage-summary td, +.coverage-summary th { + padding: 10px; +} +.coverage-summary tbody { + border: 1px solid #bbb; +} +.coverage-summary td { + border-right: 1px solid #bbb; +} +.coverage-summary td:last-child { + border-right: none; +} +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { + border-right: none !important; +} +.coverage-summary th.pct { +} +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { + text-align: right; +} +.coverage-summary td.file { + white-space: nowrap; +} +.coverage-summary td.pic { + min-width: 120px !important; +} +.coverage-summary tfoot td { +} + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { + height: 10px; +} +/* dark red */ +.red.solid, +.status-line.low, +.low .cover-fill { + background: #c21f39; +} +.low .chart { + border: 1px solid #c21f39; +} +/* medium red */ +.cstat-no, +.fstat-no, +.cbranch-no, +.cbranch-no { + background: #f6c6ce; +} +/* light red */ +.low, +.cline-no { + background: #fce1e5; +} +/* light green */ +.high, +.cline-yes { + background: rgb(230, 245, 208); +} +/* medium green */ +.cstat-yes { + background: rgb(161, 215, 106); +} +/* dark green */ +.status-line.high, +.high .cover-fill { + background: rgb(77, 146, 33); +} +.high .chart { + border: 1px solid rgb(77, 146, 33); +} + +.medium .chart { + border: 1px solid #666; +} +.medium .cover-fill { + background: #666; +} + +.cbranch-no { + background: yellow !important; + color: #111; +} + +.cstat-skip { + background: #ddd; + color: #111; +} +.fstat-skip { + background: #ddd; + color: #111 !important; +} +.cbranch-skip { + background: #ddd !important; + color: #111; +} + +span.cline-neutral { + background: #eaeaea; +} +.medium { + background: #eaeaea; +} + +.cover-fill, +.cover-empty { + display: inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { + color: #999 !important; +} +.ignore-none { + color: #999; + font-weight: normal; +} + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, +.push { + height: 48px; +} diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html new file mode 100644 index 0000000000000000000000000000000000000000..47e2bbecd5acde3d8ac9b0576a7fe69dcfbf2e26 --- /dev/null +++ b/coverage/lcov-report/index.html @@ -0,0 +1,80 @@ +<!doctype html> +<html lang="en"> +<head> + <title>Code coverage report for All files</title> + <meta charset="utf-8" /> + <link rel="stylesheet" href="prettify.css" /> + <link rel="stylesheet" href="base.css" /> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <style type='text/css'> + .coverage-summary .sorter { + background-image: url(sort-arrow-sprite.png); + } + </style> +</head> +<body> +<div class='wrapper'> + <div class='pad1'> + <h1> + All files + </h1> + <div class='clearfix'> + <div class='fl pad1y space-right2'> + <span class="strong">Unknown% </span> + <span class="quiet">Statements</span> + <span class='fraction'>0/0</span> + </div> + <div class='fl pad1y space-right2'> + <span class="strong">Unknown% </span> + <span class="quiet">Branches</span> + <span class='fraction'>0/0</span> + </div> + <div class='fl pad1y space-right2'> + <span class="strong">Unknown% </span> + <span class="quiet">Functions</span> + <span class='fraction'>0/0</span> + </div> + <div class='fl pad1y space-right2'> + <span class="strong">Unknown% </span> + <span class="quiet">Lines</span> + <span class='fraction'>0/0</span> + </div> + </div> + </div> + <div class='status-line medium'></div> +<div class="pad1"> +<table class="coverage-summary"> +<thead> +<tr> + <th data-col="file" data-fmt="html" data-html="true" class="file">File</th> + <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th> + <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th> + <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th> + <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th> + <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th> + <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th> + <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th> + <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th> + <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th> +</tr> +</thead> +<tbody></tbody> +</table> +</div><div class='push'></div><!-- for sticky footer --> +</div><!-- /wrapper --> +<div class='footer quiet pad2 space-top1 center small'> + Code coverage + generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Thu Feb 01 2018 12:35:46 GMT+0000 (GMT) +</div> +</div> +<script src="prettify.js"></script> +<script> +window.onload = function () { + if (typeof prettyPrint === 'function') { + prettyPrint(); + } +}; +</script> +<script src="sorter.js"></script> +</body> +</html> diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css new file mode 100644 index 0000000000000000000000000000000000000000..006492ca209b183967fff68c3220addd6785ce92 --- /dev/null +++ b/coverage/lcov-report/prettify.css @@ -0,0 +1,101 @@ +.pln { + color: #000; +} +@media screen { + .str { + color: #080; + } + .kwd { + color: #008; + } + .com { + color: #800; + } + .typ { + color: #606; + } + .lit { + color: #066; + } + .pun, + .opn, + .clo { + color: #660; + } + .tag { + color: #008; + } + .atn { + color: #606; + } + .atv { + color: #080; + } + .dec, + .var { + color: #606; + } + .fun { + color: red; + } +} +@media print, projection { + .str { + color: #060; + } + .kwd { + color: #006; + font-weight: bold; + } + .com { + color: #600; + font-style: italic; + } + .typ { + color: #404; + font-weight: bold; + } + .lit { + color: #044; + } + .pun, + .opn, + .clo { + color: #440; + } + .tag { + color: #006; + font-weight: bold; + } + .atn { + color: #404; + } + .atv { + color: #060; + } +} +pre.prettyprint { + padding: 2px; + border: 1px solid #888; +} +ol.linenums { + margin-top: 0; + margin-bottom: 0; +} +li.L0, +li.L1, +li.L2, +li.L3, +li.L5, +li.L6, +li.L7, +li.L8 { + list-style-type: none; +} +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { + background: #eee; +} diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js new file mode 100644 index 0000000000000000000000000000000000000000..b9fe21ba2027d3c149c9f09b1066bf59e9a08a36 --- /dev/null +++ b/coverage/lcov-report/prettify.js @@ -0,0 +1,1002 @@ +window.PR_SHOULD_USE_CONTINUATION = true +;(function() { + var h = ['break,continue,do,else,for,if,return,while'] + var u = [ + h, + 'auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile', + ] + var p = [ + u, + 'catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof', + ] + var l = [ + p, + 'alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where', + ] + var x = [ + p, + 'abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient', + ] + var R = [ + x, + 'as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var', + ] + var r = + 'all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes' + var w = [ + p, + 'debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN', + ] + var s = + 'caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END' + var I = [ + h, + 'and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None', + ] + var f = [ + h, + 'alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END', + ] + var H = [h, 'case,done,elif,esac,eval,fi,function,in,local,set,then,until'] + var A = [l, R, w, s + I, f, H] + var e = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/ + var C = 'str' + var z = 'kwd' + var j = 'com' + var O = 'typ' + var G = 'lit' + var L = 'pun' + var F = 'pln' + var m = 'tag' + var E = 'dec' + var J = 'src' + var P = 'atn' + var n = 'atv' + var N = 'nocode' + var M = + '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*' + function k(Z) { + var ad = 0 + var S = false + var ac = false + for (var V = 0, U = Z.length; V < U; ++V) { + var ae = Z[V] + if (ae.ignoreCase) { + ac = true + } else { + if ( + /[a-z]/i.test( + ae.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''), + ) + ) { + S = true + ac = false + break + } + } + } + var Y = { b: 8, t: 9, n: 10, v: 11, f: 12, r: 13 } + function ab(ah) { + var ag = ah.charCodeAt(0) + if (ag !== 92) { + return ag + } + var af = ah.charAt(1) + ag = Y[af] + if (ag) { + return ag + } else { + if ('0' <= af && af <= '7') { + return parseInt(ah.substring(1), 8) + } else { + if (af === 'u' || af === 'x') { + return parseInt(ah.substring(2), 16) + } else { + return ah.charCodeAt(1) + } + } + } + } + function T(af) { + if (af < 32) { + return (af < 16 ? '\\x0' : '\\x') + af.toString(16) + } + var ag = String.fromCharCode(af) + if (ag === '\\' || ag === '-' || ag === '[' || ag === ']') { + ag = '\\' + ag + } + return ag + } + function X(am) { + var aq = am + .substring(1, am.length - 1) + .match( + new RegExp( + '\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]', + 'g', + ), + ) + var ak = [] + var af = [] + var ao = aq[0] === '^' + for (var ar = ao ? 1 : 0, aj = aq.length; ar < aj; ++ar) { + var ah = aq[ar] + if (/\\[bdsw]/i.test(ah)) { + ak.push(ah) + } else { + var ag = ab(ah) + var al + if (ar + 2 < aj && '-' === aq[ar + 1]) { + al = ab(aq[ar + 2]) + ar += 2 + } else { + al = ag + } + af.push([ag, al]) + if (!(al < 65 || ag > 122)) { + if (!(al < 65 || ag > 90)) { + af.push([Math.max(65, ag) | 32, Math.min(al, 90) | 32]) + } + if (!(al < 97 || ag > 122)) { + af.push([Math.max(97, ag) & ~32, Math.min(al, 122) & ~32]) + } + } + } + } + af.sort(function(av, au) { + return av[0] - au[0] || au[1] - av[1] + }) + var ai = [] + var ap = [NaN, NaN] + for (var ar = 0; ar < af.length; ++ar) { + var at = af[ar] + if (at[0] <= ap[1] + 1) { + ap[1] = Math.max(ap[1], at[1]) + } else { + ai.push((ap = at)) + } + } + var an = ['['] + if (ao) { + an.push('^') + } + an.push.apply(an, ak) + for (var ar = 0; ar < ai.length; ++ar) { + var at = ai[ar] + an.push(T(at[0])) + if (at[1] > at[0]) { + if (at[1] + 1 > at[0]) { + an.push('-') + } + an.push(T(at[1])) + } + } + an.push(']') + return an.join('') + } + function W(al) { + var aj = al.source.match( + new RegExp( + '(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)', + 'g', + ), + ) + var ah = aj.length + var an = [] + for (var ak = 0, am = 0; ak < ah; ++ak) { + var ag = aj[ak] + if (ag === '(') { + ++am + } else { + if ('\\' === ag.charAt(0)) { + var af = +ag.substring(1) + if (af && af <= am) { + an[af] = -1 + } + } + } + } + for (var ak = 1; ak < an.length; ++ak) { + if (-1 === an[ak]) { + an[ak] = ++ad + } + } + for (var ak = 0, am = 0; ak < ah; ++ak) { + var ag = aj[ak] + if (ag === '(') { + ++am + if (an[am] === undefined) { + aj[ak] = '(?:' + } + } else { + if ('\\' === ag.charAt(0)) { + var af = +ag.substring(1) + if (af && af <= am) { + aj[ak] = '\\' + an[am] + } + } + } + } + for (var ak = 0, am = 0; ak < ah; ++ak) { + if ('^' === aj[ak] && '^' !== aj[ak + 1]) { + aj[ak] = '' + } + } + if (al.ignoreCase && S) { + for (var ak = 0; ak < ah; ++ak) { + var ag = aj[ak] + var ai = ag.charAt(0) + if (ag.length >= 2 && ai === '[') { + aj[ak] = X(ag) + } else { + if (ai !== '\\') { + aj[ak] = ag.replace(/[a-zA-Z]/g, function(ao) { + var ap = ao.charCodeAt(0) + return '[' + String.fromCharCode(ap & ~32, ap | 32) + ']' + }) + } + } + } + } + return aj.join('') + } + var aa = [] + for (var V = 0, U = Z.length; V < U; ++V) { + var ae = Z[V] + if (ae.global || ae.multiline) { + throw new Error('' + ae) + } + aa.push('(?:' + W(ae) + ')') + } + return new RegExp(aa.join('|'), ac ? 'gi' : 'g') + } + function a(V) { + var U = /(?:^|\s)nocode(?:\s|$)/ + var X = [] + var T = 0 + var Z = [] + var W = 0 + var S + if (V.currentStyle) { + S = V.currentStyle.whiteSpace + } else { + if (window.getComputedStyle) { + S = document.defaultView + .getComputedStyle(V, null) + .getPropertyValue('white-space') + } + } + var Y = S && 'pre' === S.substring(0, 3) + function aa(ab) { + switch (ab.nodeType) { + case 1: + if (U.test(ab.className)) { + return + } + for (var ae = ab.firstChild; ae; ae = ae.nextSibling) { + aa(ae) + } + var ad = ab.nodeName + if ('BR' === ad || 'LI' === ad) { + X[W] = '\n' + Z[W << 1] = T++ + Z[(W++ << 1) | 1] = ab + } + break + case 3: + case 4: + var ac = ab.nodeValue + if (ac.length) { + if (!Y) { + ac = ac.replace(/[ \t\r\n]+/g, ' ') + } else { + ac = ac.replace(/\r\n?/g, '\n') + } + X[W] = ac + Z[W << 1] = T + T += ac.length + Z[(W++ << 1) | 1] = ab + } + break + } + } + aa(V) + return { sourceCode: X.join('').replace(/\n$/, ''), spans: Z } + } + function B(S, U, W, T) { + if (!U) { + return + } + var V = { sourceCode: U, basePos: S } + W(V) + T.push.apply(T, V.decorations) + } + var v = /\S/ + function o(S) { + var V = undefined + for (var U = S.firstChild; U; U = U.nextSibling) { + var T = U.nodeType + V = T === 1 ? (V ? S : U) : T === 3 ? (v.test(U.nodeValue) ? S : V) : V + } + return V === S ? undefined : V + } + function g(U, T) { + var S = {} + var V + ;(function() { + var ad = U.concat(T) + var ah = [] + var ag = {} + for (var ab = 0, Z = ad.length; ab < Z; ++ab) { + var Y = ad[ab] + var ac = Y[3] + if (ac) { + for (var ae = ac.length; --ae >= 0; ) { + S[ac.charAt(ae)] = Y + } + } + var af = Y[1] + var aa = '' + af + if (!ag.hasOwnProperty(aa)) { + ah.push(af) + ag[aa] = null + } + } + ah.push(/[\0-\uffff]/) + V = k(ah) + })() + var X = T.length + var W = function(ah) { + var Z = ah.sourceCode, + Y = ah.basePos + var ad = [Y, F] + var af = 0 + var an = Z.match(V) || [] + var aj = {} + for (var ae = 0, aq = an.length; ae < aq; ++ae) { + var ag = an[ae] + var ap = aj[ag] + var ai = void 0 + var am + if (typeof ap === 'string') { + am = false + } else { + var aa = S[ag.charAt(0)] + if (aa) { + ai = ag.match(aa[1]) + ap = aa[0] + } else { + for (var ao = 0; ao < X; ++ao) { + aa = T[ao] + ai = ag.match(aa[1]) + if (ai) { + ap = aa[0] + break + } + } + if (!ai) { + ap = F + } + } + am = ap.length >= 5 && 'lang-' === ap.substring(0, 5) + if (am && !(ai && typeof ai[1] === 'string')) { + am = false + ap = J + } + if (!am) { + aj[ag] = ap + } + } + var ab = af + af += ag.length + if (!am) { + ad.push(Y + ab, ap) + } else { + var al = ai[1] + var ak = ag.indexOf(al) + var ac = ak + al.length + if (ai[2]) { + ac = ag.length - ai[2].length + ak = ac - al.length + } + var ar = ap.substring(5) + B(Y + ab, ag.substring(0, ak), W, ad) + B(Y + ab + ak, al, q(ar, al), ad) + B(Y + ab + ac, ag.substring(ac), W, ad) + } + } + ah.decorations = ad + } + return W + } + function i(T) { + var W = [], + S = [] + if (T.tripleQuotedStrings) { + W.push([ + C, + /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/, + null, + '\'"', + ]) + } else { + if (T.multiLineStrings) { + W.push([ + C, + /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/, + null, + '\'"`', + ]) + } else { + W.push([ + C, + /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/, + null, + '"\'', + ]) + } + } + if (T.verbatimStrings) { + S.push([C, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]) + } + var Y = T.hashComments + if (Y) { + if (T.cStyleComments) { + if (Y > 1) { + W.push([j, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']) + } else { + W.push([ + j, + /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/, + null, + '#', + ]) + } + S.push([ + C, + /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, + null, + ]) + } else { + W.push([j, /^#[^\r\n]*/, null, '#']) + } + } + if (T.cStyleComments) { + S.push([j, /^\/\/[^\r\n]*/, null]) + S.push([j, /^\/\*[\s\S]*?(?:\*\/|$)/, null]) + } + if (T.regexLiterals) { + var X = + '/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/' + S.push(['lang-regex', new RegExp('^' + M + '(' + X + ')')]) + } + var V = T.types + if (V) { + S.push([O, V]) + } + var U = ('' + T.keywords).replace(/^ | $/g, '') + if (U.length) { + S.push([z, new RegExp('^(?:' + U.replace(/[\s,]+/g, '|') + ')\\b'), null]) + } + W.push([F, /^\s+/, null, ' \r\n\t\xA0']) + S.push( + [G, /^@[a-z_$][a-z_$@0-9]*/i, null], + [O, /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null], + [F, /^[a-z_$][a-z_$@0-9]*/i, null], + [ + G, + new RegExp( + '^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*', + 'i', + ), + null, + '0123456789', + ], + [F, /^\\[\s\S]?/, null], + [L, /^.[^\s\w\.$@\'\"\`\/\#\\]*/, null], + ) + return g(W, S) + } + var K = i({ + keywords: A, + hashComments: true, + cStyleComments: true, + multiLineStrings: true, + regexLiterals: true, + }) + function Q(V, ag) { + var U = /(?:^|\s)nocode(?:\s|$)/ + var ab = /\r\n?|\n/ + var ac = V.ownerDocument + var S + if (V.currentStyle) { + S = V.currentStyle.whiteSpace + } else { + if (window.getComputedStyle) { + S = ac.defaultView + .getComputedStyle(V, null) + .getPropertyValue('white-space') + } + } + var Z = S && 'pre' === S.substring(0, 3) + var af = ac.createElement('LI') + while (V.firstChild) { + af.appendChild(V.firstChild) + } + var W = [af] + function ae(al) { + switch (al.nodeType) { + case 1: + if (U.test(al.className)) { + break + } + if ('BR' === al.nodeName) { + ad(al) + if (al.parentNode) { + al.parentNode.removeChild(al) + } + } else { + for (var an = al.firstChild; an; an = an.nextSibling) { + ae(an) + } + } + break + case 3: + case 4: + if (Z) { + var am = al.nodeValue + var aj = am.match(ab) + if (aj) { + var ai = am.substring(0, aj.index) + al.nodeValue = ai + var ah = am.substring(aj.index + aj[0].length) + if (ah) { + var ak = al.parentNode + ak.insertBefore(ac.createTextNode(ah), al.nextSibling) + } + ad(al) + if (!ai) { + al.parentNode.removeChild(al) + } + } + } + break + } + } + function ad(ak) { + while (!ak.nextSibling) { + ak = ak.parentNode + if (!ak) { + return + } + } + function ai(al, ar) { + var aq = ar ? al.cloneNode(false) : al + var ao = al.parentNode + if (ao) { + var ap = ai(ao, 1) + var an = al.nextSibling + ap.appendChild(aq) + for (var am = an; am; am = an) { + an = am.nextSibling + ap.appendChild(am) + } + } + return aq + } + var ah = ai(ak.nextSibling, 0) + for (var aj; (aj = ah.parentNode) && aj.nodeType === 1; ) { + ah = aj + } + W.push(ah) + } + for (var Y = 0; Y < W.length; ++Y) { + ae(W[Y]) + } + if (ag === (ag | 0)) { + W[0].setAttribute('value', ag) + } + var aa = ac.createElement('OL') + aa.className = 'linenums' + var X = Math.max(0, (ag - 1) | 0) || 0 + for (var Y = 0, T = W.length; Y < T; ++Y) { + af = W[Y] + af.className = 'L' + (Y + X) % 10 + if (!af.firstChild) { + af.appendChild(ac.createTextNode('\xA0')) + } + aa.appendChild(af) + } + V.appendChild(aa) + } + function D(ac) { + var aj = /\bMSIE\b/.test(navigator.userAgent) + var am = /\n/g + var al = ac.sourceCode + var an = al.length + var V = 0 + var aa = ac.spans + var T = aa.length + var ah = 0 + var X = ac.decorations + var Y = X.length + var Z = 0 + X[Y] = an + var ar, aq + for (aq = ar = 0; aq < Y; ) { + if (X[aq] !== X[aq + 2]) { + X[ar++] = X[aq++] + X[ar++] = X[aq++] + } else { + aq += 2 + } + } + Y = ar + for (aq = ar = 0; aq < Y; ) { + var at = X[aq] + var ab = X[aq + 1] + var W = aq + 2 + while (W + 2 <= Y && X[W + 1] === ab) { + W += 2 + } + X[ar++] = at + X[ar++] = ab + aq = W + } + Y = X.length = ar + var ae = null + while (ah < T) { + var af = aa[ah] + var S = aa[ah + 2] || an + var ag = X[Z] + var ap = X[Z + 2] || an + var W = Math.min(S, ap) + var ak = aa[ah + 1] + var U + if (ak.nodeType !== 1 && (U = al.substring(V, W))) { + if (aj) { + U = U.replace(am, '\r') + } + ak.nodeValue = U + var ai = ak.ownerDocument + var ao = ai.createElement('SPAN') + ao.className = X[Z + 1] + var ad = ak.parentNode + ad.replaceChild(ao, ak) + ao.appendChild(ak) + if (V < S) { + aa[ah + 1] = ak = ai.createTextNode(al.substring(W, S)) + ad.insertBefore(ak, ao.nextSibling) + } + } + V = W + if (V >= S) { + ah += 2 + } + if (V >= ap) { + Z += 2 + } + } + } + var t = {} + function c(U, V) { + for (var S = V.length; --S >= 0; ) { + var T = V[S] + if (!t.hasOwnProperty(T)) { + t[T] = U + } else { + if (window.console) { + console.warn('cannot override language handler %s', T) + } + } + } + } + function q(T, S) { + if (!(T && t.hasOwnProperty(T))) { + T = /^\s*</.test(S) ? 'default-markup' : 'default-code' + } + return t[T] + } + c(K, ['default-code']) + c( + g( + [], + [ + [F, /^[^<?]+/], + [E, /^<!\w[^>]*(?:>|$)/], + [j, /^<\!--[\s\S]*?(?:-\->|$)/], + ['lang-', /^<\?([\s\S]+?)(?:\?>|$)/], + ['lang-', /^<%([\s\S]+?)(?:%>|$)/], + [L, /^(?:<[%?]|[%?]>)/], + ['lang-', /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i], + ['lang-js', /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i], + ['lang-css', /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i], + ['lang-in.tag', /^(<\/?[a-z][^<>]*>)/i], + ], + ), + ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl'], + ) + c( + g( + [ + [F, /^[\s]+/, null, ' \t\r\n'], + [n, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '"\''], + ], + [ + [m, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i], + [P, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i], + ['lang-uq.val', /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/], + [L, /^[=<>\/]+/], + ['lang-js', /^on\w+\s*=\s*\"([^\"]+)\"/i], + ['lang-js', /^on\w+\s*=\s*\'([^\']+)\'/i], + ['lang-js', /^on\w+\s*=\s*([^\"\'>\s]+)/i], + ['lang-css', /^style\s*=\s*\"([^\"]+)\"/i], + ['lang-css', /^style\s*=\s*\'([^\']+)\'/i], + ['lang-css', /^style\s*=\s*([^\"\'>\s]+)/i], + ], + ), + ['in.tag'], + ) + c(g([], [[n, /^[\s\S]+/]]), ['uq.val']) + c(i({ keywords: l, hashComments: true, cStyleComments: true, types: e }), [ + 'c', + 'cc', + 'cpp', + 'cxx', + 'cyc', + 'm', + ]) + c(i({ keywords: 'null,true,false' }), ['json']) + c( + i({ + keywords: R, + hashComments: true, + cStyleComments: true, + verbatimStrings: true, + types: e, + }), + ['cs'], + ) + c(i({ keywords: x, cStyleComments: true }), ['java']) + c(i({ keywords: H, hashComments: true, multiLineStrings: true }), [ + 'bsh', + 'csh', + 'sh', + ]) + c( + i({ + keywords: I, + hashComments: true, + multiLineStrings: true, + tripleQuotedStrings: true, + }), + ['cv', 'py'], + ) + c( + i({ + keywords: s, + hashComments: true, + multiLineStrings: true, + regexLiterals: true, + }), + ['perl', 'pl', 'pm'], + ) + c( + i({ + keywords: f, + hashComments: true, + multiLineStrings: true, + regexLiterals: true, + }), + ['rb'], + ) + c(i({ keywords: w, cStyleComments: true, regexLiterals: true }), ['js']) + c( + i({ + keywords: r, + hashComments: 3, + cStyleComments: true, + multilineStrings: true, + tripleQuotedStrings: true, + regexLiterals: true, + }), + ['coffee'], + ) + c(g([], [[C, /^[\s\S]+/]]), ['regex']) + function d(V) { + var U = V.langExtension + try { + var S = a(V.sourceNode) + var T = S.sourceCode + V.sourceCode = T + V.spans = S.spans + V.basePos = 0 + q(U, T)(V) + D(V) + } catch (W) { + if ('console' in window) { + console.log(W && W.stack ? W.stack : W) + } + } + } + function y(W, V, U) { + var S = document.createElement('PRE') + S.innerHTML = W + if (U) { + Q(S, U) + } + var T = { langExtension: V, numberLines: U, sourceNode: S } + d(T) + return S.innerHTML + } + function b(ad) { + function Y(af) { + return document.getElementsByTagName(af) + } + var ac = [Y('pre'), Y('code'), Y('xmp')] + var T = [] + for (var aa = 0; aa < ac.length; ++aa) { + for (var Z = 0, V = ac[aa].length; Z < V; ++Z) { + T.push(ac[aa][Z]) + } + } + ac = null + var W = Date + if (!W.now) { + W = { + now: function() { + return +new Date() + }, + } + } + var X = 0 + var S + var ab = /\blang(?:uage)?-([\w.]+)(?!\S)/ + var ae = /\bprettyprint\b/ + function U() { + var ag = window.PR_SHOULD_USE_CONTINUATION ? W.now() + 250 : Infinity + for (; X < T.length && W.now() < ag; X++) { + var aj = T[X] + var ai = aj.className + if (ai.indexOf('prettyprint') >= 0) { + var ah = ai.match(ab) + var am + if (!ah && (am = o(aj)) && 'CODE' === am.tagName) { + ah = am.className.match(ab) + } + if (ah) { + ah = ah[1] + } + var al = false + for (var ak = aj.parentNode; ak; ak = ak.parentNode) { + if ( + (ak.tagName === 'pre' || + ak.tagName === 'code' || + ak.tagName === 'xmp') && + ak.className && + ak.className.indexOf('prettyprint') >= 0 + ) { + al = true + break + } + } + if (!al) { + var af = aj.className.match(/\blinenums\b(?::(\d+))?/) + af = af ? (af[1] && af[1].length ? +af[1] : true) : false + if (af) { + Q(aj, af) + } + S = { langExtension: ah, sourceNode: aj, numberLines: af } + d(S) + } + } + } + if (X < T.length) { + setTimeout(U, 250) + } else { + if (ad) { + ad() + } + } + } + U() + } + window.prettyPrintOne = y + window.prettyPrint = b + window.PR = { + createSimpleLexer: g, + registerLangHandler: c, + sourceDecorator: i, + PR_ATTRIB_NAME: P, + PR_ATTRIB_VALUE: n, + PR_COMMENT: j, + PR_DECLARATION: E, + PR_KEYWORD: z, + PR_LITERAL: G, + PR_NOCODE: N, + PR_PLAIN: F, + PR_PUNCTUATION: L, + PR_SOURCE: J, + PR_STRING: C, + PR_TAG: m, + PR_TYPE: O, + } +})() +PR.registerLangHandler( + PR.createSimpleLexer( + [], + [ + [PR.PR_DECLARATION, /^<!\w[^>]*(?:>|$)/], + [PR.PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/], + [PR.PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/], + ['lang-', /^<\?([\s\S]+?)(?:\?>|$)/], + ['lang-', /^<%([\s\S]+?)(?:%>|$)/], + ['lang-', /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i], + [ + 'lang-handlebars', + /^<script\b[^>]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i, + ], + ['lang-js', /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i], + ['lang-css', /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i], + ['lang-in.tag', /^(<\/?[a-z][^<>]*>)/i], + [PR.PR_DECLARATION, /^{{[#^>/]?\s*[\w.][^}]*}}/], + [PR.PR_DECLARATION, /^{{&?\s*[\w.][^}]*}}/], + [PR.PR_DECLARATION, /^{{{>?\s*[\w.][^}]*}}}/], + [PR.PR_COMMENT, /^{{![^}]*}}/], + ], + ), + ['handlebars', 'hbs'], +) +PR.registerLangHandler( + PR.createSimpleLexer( + [[PR.PR_PLAIN, /^[ \t\r\n\f]+/, null, ' \t\r\n\f']], + [ + [ + PR.PR_STRING, + /^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/, + null, + ], + [ + PR.PR_STRING, + /^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/, + null, + ], + ['lang-css-str', /^url\(([^\)\"\']*)\)/i], + [ + PR.PR_KEYWORD, + /^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i, + null, + ], + [ + 'lang-css-kw', + /^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i, + ], + [PR.PR_COMMENT, /^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//], + [PR.PR_COMMENT, /^(?:<!--|-->)/], + [PR.PR_LITERAL, /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i], + [PR.PR_LITERAL, /^#(?:[0-9a-f]{3}){1,2}/i], + [ + PR.PR_PLAIN, + /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i, + ], + [PR.PR_PUNCTUATION, /^[^\s\w\'\"]+/], + ], + ), + ['css'], +) +PR.registerLangHandler( + PR.createSimpleLexer( + [], + [ + [ + PR.PR_KEYWORD, + /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i, + ], + ], + ), + ['css-kw'], +) +PR.registerLangHandler( + PR.createSimpleLexer([], [[PR.PR_STRING, /^[^\)\"\']+/]]), + ['css-str'], +) diff --git a/coverage/lcov-report/sort-arrow-sprite.png b/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..03f704a609c6fd0dbfdac63466a7d7c958b5cbf3 Binary files /dev/null and b/coverage/lcov-report/sort-arrow-sprite.png differ diff --git a/coverage/lcov-report/sorter.js b/coverage/lcov-report/sorter.js new file mode 100644 index 0000000000000000000000000000000000000000..6d93095ef3d71460eee4123b5c8f7f30a1f7118a --- /dev/null +++ b/coverage/lcov-report/sorter.js @@ -0,0 +1,168 @@ +var addSorting = (function() { + 'use strict' + var cols, + currentSort = { + index: 0, + desc: false, + } + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary') + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr') + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody') + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n] + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i] + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string', + } + cols.push(col) + if (col.sortable) { + col.defaultDescSort = col.type === 'number' + colNode.innerHTML = colNode.innerHTML + '<span class="sorter"></span>' + } + } + return cols + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i] + col = cols[i] + val = colNode.getAttribute('data-value') + if (col.type === 'number') { + val = Number(val) + } + data[col.key] = val + } + return data + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]) + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key] + b = b.data[key] + return a < b ? -1 : a > b ? 1 : 0 + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b) + } + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]) + tableBody.removeChild(rowNodes[i]) + } + + rows.sort(finalSorter) + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]) + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '') + col.className = cls + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted' + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i] + + return function() { + var desc = col.defaultDescSort + + if (currentSort.index === i) { + desc = !currentSort.desc + } + sortByIndex(i, desc) + removeSortIndicators() + currentSort.index = i + currentSort.desc = desc + addSortIndicators() + } + } + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)) + } else { + el.attachEvent('onclick', ithSorter(i)) + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return + } + cols = loadColumns() + loadData(cols) + addSortIndicators() + enableUI() + } +})() + +window.addEventListener('load', addSorting) diff --git a/coverage/lcov.info b/coverage/lcov.info new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/packages/client/test/components/Root.test.jsx b/packages/client/test/components/Root.test.jsx index 4bf901d046241bf4c384a35ef9d79d91929c5c4b..9e3916e8b7f5059708c24e1b8d9c932bcf0ea85f 100644 --- a/packages/client/test/components/Root.test.jsx +++ b/packages/client/test/components/Root.test.jsx @@ -1,5 +1,5 @@ import React from 'react' -import { shallow } from 'enzyme' +import { mount } from 'enzyme' import createHistory from 'history/createBrowserHistory' import styled from 'styled-components' @@ -18,7 +18,7 @@ describe('<Root/>', () => { test: ${props => expect(props.theme.color).toBe('blue')}; ` - shallow( + mount( <Root history={history} routes={<Box />}