diff --git a/js-jasmine/README.md b/js-jasmine/README.md index 2da3b00f..aa6d7141 100644 --- a/js-jasmine/README.md +++ b/js-jasmine/README.md @@ -19,4 +19,11 @@ The test spec required that I did not alter the Item class. This made it more di My tests verged on state driven rather than behaviour driven. I could not find an equivalent of RSpec's "change by" matcher for Jasmine. Any tips would be appreciated. -With more time I would add a 'sellInChange' function to each item type to mirror the qualityChange. The different sellIn change for Sulfurus is still handled by exception. \ No newline at end of file +With more time I would add a 'sellInChange' function to each item type to mirror the qualityChange. The different sellIn change for Sulfurus is still handled by exception. + +## Tests + +To run the tests and see code coverage run ``npm run test``. + +Current test coverage: +![test coverage](https://i.imgur.com/vDJgGqL.png) \ No newline at end of file diff --git a/js-jasmine/coverage/coverage.json b/js-jasmine/coverage/coverage.json new file mode 100644 index 00000000..6b7976ec --- /dev/null +++ b/js-jasmine/coverage/coverage.json @@ -0,0 +1 @@ +{"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/spec/shop_spec.js":{"path":"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/spec/shop_spec.js","s":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":5,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":2,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":4,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":2,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1},"b":{},"f":{},"fnMap":{},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":41}},"2":{"start":{"line":3,"column":0},"end":{"line":121,"column":3}},"3":{"start":{"line":4,"column":2},"end":{"line":8,"column":4}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":38}},"5":{"start":{"line":10,"column":2},"end":{"line":120,"column":5}},"6":{"start":{"line":11,"column":4},"end":{"line":41,"column":7}},"7":{"start":{"line":12,"column":6},"end":{"line":14,"column":9}},"8":{"start":{"line":13,"column":8},"end":{"line":13,"column":26}},"9":{"start":{"line":15,"column":6},"end":{"line":18,"column":9}},"10":{"start":{"line":16,"column":8},"end":{"line":16,"column":49}},"11":{"start":{"line":17,"column":8},"end":{"line":17,"column":45}},"12":{"start":{"line":19,"column":6},"end":{"line":23,"column":9}},"13":{"start":{"line":20,"column":8},"end":{"line":20,"column":24}},"14":{"start":{"line":21,"column":8},"end":{"line":21,"column":49}},"15":{"start":{"line":22,"column":8},"end":{"line":22,"column":47}},"16":{"start":{"line":24,"column":6},"end":{"line":29,"column":9}},"17":{"start":{"line":25,"column":8},"end":{"line":25,"column":24}},"18":{"start":{"line":26,"column":8},"end":{"line":26,"column":25}},"19":{"start":{"line":27,"column":8},"end":{"line":27,"column":49}},"20":{"start":{"line":28,"column":8},"end":{"line":28,"column":48}},"21":{"start":{"line":30,"column":6},"end":{"line":35,"column":9}},"22":{"start":{"line":31,"column":8},"end":{"line":31,"column":24}},"23":{"start":{"line":32,"column":8},"end":{"line":32,"column":25}},"24":{"start":{"line":33,"column":8},"end":{"line":33,"column":49}},"25":{"start":{"line":34,"column":8},"end":{"line":34,"column":48}},"26":{"start":{"line":36,"column":6},"end":{"line":40,"column":9}},"27":{"start":{"line":37,"column":8},"end":{"line":37,"column":25}},"28":{"start":{"line":38,"column":8},"end":{"line":38,"column":49}},"29":{"start":{"line":39,"column":8},"end":{"line":39,"column":44}},"30":{"start":{"line":43,"column":4},"end":{"line":58,"column":7}},"31":{"start":{"line":44,"column":6},"end":{"line":46,"column":9}},"32":{"start":{"line":45,"column":8},"end":{"line":45,"column":32}},"33":{"start":{"line":47,"column":6},"end":{"line":52,"column":9}},"34":{"start":{"line":48,"column":8},"end":{"line":48,"column":24}},"35":{"start":{"line":49,"column":8},"end":{"line":49,"column":25}},"36":{"start":{"line":50,"column":8},"end":{"line":50,"column":49}},"37":{"start":{"line":51,"column":8},"end":{"line":51,"column":48}},"38":{"start":{"line":53,"column":6},"end":{"line":57,"column":9}},"39":{"start":{"line":54,"column":8},"end":{"line":54,"column":26}},"40":{"start":{"line":55,"column":8},"end":{"line":55,"column":49}},"41":{"start":{"line":56,"column":8},"end":{"line":56,"column":45}},"42":{"start":{"line":60,"column":4},"end":{"line":71,"column":7}},"43":{"start":{"line":61,"column":6},"end":{"line":63,"column":9}},"44":{"start":{"line":62,"column":8},"end":{"line":62,"column":49}},"45":{"start":{"line":64,"column":6},"end":{"line":70,"column":9}},"46":{"start":{"line":65,"column":8},"end":{"line":65,"column":24}},"47":{"start":{"line":66,"column":8},"end":{"line":66,"column":25}},"48":{"start":{"line":67,"column":8},"end":{"line":67,"column":49}},"49":{"start":{"line":68,"column":8},"end":{"line":68,"column":43}},"50":{"start":{"line":69,"column":8},"end":{"line":69,"column":44}},"51":{"start":{"line":73,"column":4},"end":{"line":101,"column":7}},"52":{"start":{"line":74,"column":6},"end":{"line":76,"column":9}},"53":{"start":{"line":75,"column":8},"end":{"line":75,"column":64}},"54":{"start":{"line":77,"column":6},"end":{"line":82,"column":9}},"55":{"start":{"line":78,"column":8},"end":{"line":78,"column":25}},"56":{"start":{"line":79,"column":8},"end":{"line":79,"column":25}},"57":{"start":{"line":80,"column":8},"end":{"line":80,"column":49}},"58":{"start":{"line":81,"column":8},"end":{"line":81,"column":44}},"59":{"start":{"line":83,"column":6},"end":{"line":88,"column":9}},"60":{"start":{"line":84,"column":8},"end":{"line":84,"column":24}},"61":{"start":{"line":85,"column":8},"end":{"line":85,"column":25}},"62":{"start":{"line":86,"column":8},"end":{"line":86,"column":49}},"63":{"start":{"line":87,"column":8},"end":{"line":87,"column":44}},"64":{"start":{"line":89,"column":6},"end":{"line":94,"column":9}},"65":{"start":{"line":90,"column":8},"end":{"line":90,"column":24}},"66":{"start":{"line":91,"column":8},"end":{"line":91,"column":25}},"67":{"start":{"line":92,"column":8},"end":{"line":92,"column":49}},"68":{"start":{"line":93,"column":8},"end":{"line":93,"column":44}},"69":{"start":{"line":95,"column":6},"end":{"line":100,"column":9}},"70":{"start":{"line":96,"column":8},"end":{"line":96,"column":24}},"71":{"start":{"line":97,"column":8},"end":{"line":97,"column":25}},"72":{"start":{"line":98,"column":8},"end":{"line":98,"column":49}},"73":{"start":{"line":99,"column":8},"end":{"line":99,"column":44}},"74":{"start":{"line":103,"column":4},"end":{"line":119,"column":7}},"75":{"start":{"line":104,"column":6},"end":{"line":106,"column":9}},"76":{"start":{"line":105,"column":8},"end":{"line":105,"column":38}},"77":{"start":{"line":107,"column":6},"end":{"line":112,"column":9}},"78":{"start":{"line":108,"column":8},"end":{"line":108,"column":24}},"79":{"start":{"line":109,"column":8},"end":{"line":109,"column":25}},"80":{"start":{"line":110,"column":8},"end":{"line":110,"column":49}},"81":{"start":{"line":111,"column":8},"end":{"line":111,"column":48}},"82":{"start":{"line":113,"column":6},"end":{"line":118,"column":9}},"83":{"start":{"line":114,"column":8},"end":{"line":114,"column":24}},"84":{"start":{"line":115,"column":8},"end":{"line":115,"column":25}},"85":{"start":{"line":116,"column":8},"end":{"line":116,"column":49}},"86":{"start":{"line":117,"column":8},"end":{"line":117,"column":48}}},"branchMap":{}},"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/shop.js":{"path":"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/shop.js","s":{"1":1,"2":1,"3":1,"4":4,"5":1,"6":1,"7":1,"8":1,"9":14,"10":14,"11":14,"12":14,"13":14,"14":14,"15":14,"16":14,"17":40,"18":9,"19":5,"20":14,"21":13,"22":14,"23":14,"24":14,"25":1,"26":14,"27":1,"28":1},"b":{"1":[9,31],"2":[13,1],"3":[1,13],"4":[1,13]},"f":{"1":4,"2":1,"3":14,"4":14,"5":14,"6":14,"7":14,"8":14,"9":14,"10":14},"fnMap":{"1":{"name":"(anonymous_1)","line":6,"loc":{"start":{"line":6,"column":46},"end":{"line":6,"column":62}}},"2":{"name":"(anonymous_2)","line":12,"loc":{"start":{"line":12,"column":13},"end":{"line":12,"column":26}}},"3":{"name":"(anonymous_3)","line":17,"loc":{"start":{"line":17,"column":15},"end":{"line":17,"column":18}}},"4":{"name":"(anonymous_4)","line":24,"loc":{"start":{"line":24,"column":13},"end":{"line":24,"column":20}}},"5":{"name":"(anonymous_5)","line":29,"loc":{"start":{"line":29,"column":20},"end":{"line":29,"column":27}}},"6":{"name":"(anonymous_6)","line":34,"loc":{"start":{"line":34,"column":29},"end":{"line":34,"column":36}}},"7":{"name":"(anonymous_7)","line":43,"loc":{"start":{"line":43,"column":19},"end":{"line":43,"column":26}}},"8":{"name":"(anonymous_8)","line":49,"loc":{"start":{"line":49,"column":21},"end":{"line":49,"column":28}}},"9":{"name":"(anonymous_9)","line":54,"loc":{"start":{"line":54,"column":18},"end":{"line":54,"column":25}}},"10":{"name":"(anonymous_10)","line":60,"loc":{"start":{"line":60,"column":18},"end":{"line":60,"column":25}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":2,"column":27}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":19}},"3":{"start":{"line":6,"column":0},"end":{"line":8,"column":3}},"4":{"start":{"line":7,"column":2},"end":{"line":7,"column":46}},"5":{"start":{"line":10,"column":0},"end":{"line":10,"column":53}},"6":{"start":{"line":13,"column":4},"end":{"line":13,"column":23}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":26}},"8":{"start":{"line":15,"column":4},"end":{"line":15,"column":25}},"9":{"start":{"line":18,"column":4},"end":{"line":20,"column":6}},"10":{"start":{"line":19,"column":6},"end":{"line":19,"column":28}},"11":{"start":{"line":21,"column":4},"end":{"line":21,"column":22}},"12":{"start":{"line":25,"column":4},"end":{"line":25,"column":34}},"13":{"start":{"line":26,"column":4},"end":{"line":26,"column":33}},"14":{"start":{"line":30,"column":4},"end":{"line":30,"column":43}},"15":{"start":{"line":31,"column":4},"end":{"line":31,"column":35}},"16":{"start":{"line":35,"column":4},"end":{"line":39,"column":5}},"17":{"start":{"line":36,"column":6},"end":{"line":38,"column":7}},"18":{"start":{"line":37,"column":8},"end":{"line":37,"column":81}},"19":{"start":{"line":40,"column":4},"end":{"line":40,"column":67}},"20":{"start":{"line":44,"column":4},"end":{"line":46,"column":5}},"21":{"start":{"line":45,"column":6},"end":{"line":45,"column":36}},"22":{"start":{"line":50,"column":4},"end":{"line":50,"column":32}},"23":{"start":{"line":51,"column":4},"end":{"line":51,"column":32}},"24":{"start":{"line":55,"column":4},"end":{"line":57,"column":5}},"25":{"start":{"line":56,"column":6},"end":{"line":56,"column":38}},"26":{"start":{"line":61,"column":4},"end":{"line":63,"column":5}},"27":{"start":{"line":62,"column":6},"end":{"line":62,"column":38}},"28":{"start":{"line":66,"column":0},"end":{"line":68,"column":2}}},"branchMap":{"1":{"line":36,"type":"if","locations":[{"start":{"line":36,"column":6},"end":{"line":36,"column":6}},{"start":{"line":36,"column":6},"end":{"line":36,"column":6}}]},"2":{"line":44,"type":"if","locations":[{"start":{"line":44,"column":4},"end":{"line":44,"column":4}},{"start":{"line":44,"column":4},"end":{"line":44,"column":4}}]},"3":{"line":55,"type":"if","locations":[{"start":{"line":55,"column":4},"end":{"line":55,"column":4}},{"start":{"line":55,"column":4},"end":{"line":55,"column":4}}]},"4":{"line":61,"type":"if","locations":[{"start":{"line":61,"column":4},"end":{"line":61,"column":4}},{"start":{"line":61,"column":4},"end":{"line":61,"column":4}}]}}},"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/item_types/aged_brie_update.js":{"path":"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/item_types/aged_brie_update.js","s":{"1":1,"2":1,"3":2,"4":0,"5":2},"b":{"1":[0,2]},"f":{"1":2},"fnMap":{"1":{"name":"(anonymous_1)","line":2,"loc":{"start":{"line":2,"column":24},"end":{"line":2,"column":42}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":36}},"2":{"start":{"line":2,"column":0},"end":{"line":8,"column":2}},"3":{"start":{"line":3,"column":2},"end":{"line":7,"column":3}},"4":{"start":{"line":4,"column":4},"end":{"line":4,"column":13}},"5":{"start":{"line":6,"column":4},"end":{"line":6,"column":13}}},"branchMap":{"1":{"line":3,"type":"if","locations":[{"start":{"line":3,"column":2},"end":{"line":3,"column":2}},{"start":{"line":3,"column":2},"end":{"line":3,"column":2}}]}}},"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/item_types/backstage_pass_update.js":{"path":"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/item_types/backstage_pass_update.js","s":{"1":1,"2":1,"3":4,"4":1,"5":3,"6":1,"7":2,"8":1,"9":1},"b":{"1":[1,3],"2":[1,2],"3":[1,1]},"f":{"1":4},"fnMap":{"1":{"name":"(anonymous_1)","line":2,"loc":{"start":{"line":2,"column":24},"end":{"line":2,"column":51}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":41}},"2":{"start":{"line":2,"column":0},"end":{"line":12,"column":2}},"3":{"start":{"line":3,"column":2},"end":{"line":11,"column":3}},"4":{"start":{"line":4,"column":4},"end":{"line":4,"column":20}},"5":{"start":{"line":5,"column":9},"end":{"line":11,"column":3}},"6":{"start":{"line":6,"column":4},"end":{"line":6,"column":13}},"7":{"start":{"line":7,"column":9},"end":{"line":11,"column":3}},"8":{"start":{"line":8,"column":4},"end":{"line":8,"column":13}},"9":{"start":{"line":10,"column":4},"end":{"line":10,"column":13}}},"branchMap":{"1":{"line":3,"type":"if","locations":[{"start":{"line":3,"column":2},"end":{"line":3,"column":2}},{"start":{"line":3,"column":2},"end":{"line":3,"column":2}}]},"2":{"line":5,"type":"if","locations":[{"start":{"line":5,"column":9},"end":{"line":5,"column":9}},{"start":{"line":5,"column":9},"end":{"line":5,"column":9}}]},"3":{"line":7,"type":"if","locations":[{"start":{"line":7,"column":9},"end":{"line":7,"column":9}},{"start":{"line":7,"column":9},"end":{"line":7,"column":9}}]}}},"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/item_types/conjured_update.js":{"path":"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/item_types/conjured_update.js","s":{"1":1,"2":1,"3":2,"4":1,"5":1},"b":{"1":[1,1]},"f":{"1":2},"fnMap":{"1":{"name":"(anonymous_1)","line":2,"loc":{"start":{"line":2,"column":24},"end":{"line":2,"column":42}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}},"2":{"start":{"line":2,"column":0},"end":{"line":8,"column":2}},"3":{"start":{"line":3,"column":2},"end":{"line":7,"column":3}},"4":{"start":{"line":4,"column":4},"end":{"line":4,"column":14}},"5":{"start":{"line":6,"column":4},"end":{"line":6,"column":14}}},"branchMap":{"1":{"line":3,"type":"if","locations":[{"start":{"line":3,"column":2},"end":{"line":3,"column":2}},{"start":{"line":3,"column":2},"end":{"line":3,"column":2}}]}}},"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/item_types/sulfuras_update.js":{"path":"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/item_types/sulfuras_update.js","s":{"1":1,"2":1,"3":1},"b":{},"f":{"1":1},"fnMap":{"1":{"name":"(anonymous_1)","line":2,"loc":{"start":{"line":2,"column":24},"end":{"line":2,"column":36}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}},"2":{"start":{"line":2,"column":0},"end":{"line":4,"column":2}},"3":{"start":{"line":3,"column":2},"end":{"line":3,"column":11}}},"branchMap":{}},"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/standard_update.js":{"path":"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/standard_update.js","s":{"1":1,"2":5,"3":2,"4":3},"b":{"1":[2,3]},"f":{"1":5},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":24},"end":{"line":1,"column":42}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":7,"column":2}},"2":{"start":{"line":2,"column":2},"end":{"line":6,"column":3}},"3":{"start":{"line":3,"column":4},"end":{"line":3,"column":14}},"4":{"start":{"line":5,"column":4},"end":{"line":5,"column":14}}},"branchMap":{"1":{"line":2,"type":"if","locations":[{"start":{"line":2,"column":2},"end":{"line":2,"column":2}},{"start":{"line":2,"column":2},"end":{"line":2,"column":2}}]}}},"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/spec/texttest_fixture.js":{"path":"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/spec/texttest_fixture.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0},"b":{"1":[0,0]},"f":{},"fnMap":{},"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":40}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":40}},"3":{"start":{"line":5,"column":0},"end":{"line":17,"column":2}},"4":{"start":{"line":19,"column":0},"end":{"line":19,"column":42}},"5":{"start":{"line":20,"column":0},"end":{"line":20,"column":35}},"6":{"start":{"line":22,"column":0},"end":{"line":22,"column":23}},"7":{"start":{"line":23,"column":0},"end":{"line":28,"column":1}},"8":{"start":{"line":24,"column":2},"end":{"line":24,"column":48}},"9":{"start":{"line":25,"column":2},"end":{"line":25,"column":39}},"10":{"start":{"line":26,"column":2},"end":{"line":26,"column":86}},"11":{"start":{"line":26,"column":24},"end":{"line":26,"column":84}},"12":{"start":{"line":27,"column":2},"end":{"line":27,"column":29}}},"branchMap":{"1":{"line":19,"type":"binary-expr","locations":[{"start":{"line":19,"column":13},"end":{"line":19,"column":36}},{"start":{"line":19,"column":40},"end":{"line":19,"column":41}}]}}},"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/item.js":{"path":"/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/item.js","s":{"1":0,"2":0,"3":0,"4":0},"b":{},"f":{"1":0},"fnMap":{"1":{"name":"(anonymous_1)","line":2,"loc":{"start":{"line":2,"column":13},"end":{"line":2,"column":37}}}},"statementMap":{"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":21}},"2":{"start":{"line":4,"column":4},"end":{"line":4,"column":25}},"3":{"start":{"line":5,"column":4},"end":{"line":5,"column":27}},"4":{"start":{"line":8,"column":0},"end":{"line":10,"column":2}}},"branchMap":{}}} \ No newline at end of file diff --git a/js-jasmine/coverage/lcov-report/base.css b/js-jasmine/coverage/lcov-report/base.css new file mode 100644 index 00000000..29737bcb --- /dev/null +++ b/js-jasmine/coverage/lcov-report/base.css @@ -0,0 +1,213 @@ +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) } +/* dark yellow (gold) */ +.medium .chart { border:1px solid #f9cd0b; } +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } +/* light gray */ +span.cline-neutral { background: #eaeaea; } + +.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; } + + +.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/js-jasmine/coverage/lcov-report/index.html b/js-jasmine/coverage/lcov-report/index.html new file mode 100644 index 00000000..8e49b713 --- /dev/null +++ b/js-jasmine/coverage/lcov-report/index.html @@ -0,0 +1,119 @@ + + + + Code coverage report for All files + + + + + + + +
+
+

+ / +

+
+
+ 89.1% + Statements + 139/156 +
+
+ 86.36% + Branches + 19/22 +
+
+ 93.75% + Functions + 15/16 +
+
+ 89.68% + Lines + 139/155 +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
spec/
87.76%86/980%0/2100%0/088.66%86/97
src/
88.89%32/36100%10/1091.67%11/1288.89%32/36
src/item_types/
95.45%21/2290%9/10100%4/495.45%21/22
+
+
+ + + + + + + diff --git a/js-jasmine/coverage/lcov-report/prettify.css b/js-jasmine/coverage/lcov-report/prettify.css new file mode 100644 index 00000000..b317a7cd --- /dev/null +++ b/js-jasmine/coverage/lcov-report/prettify.css @@ -0,0 +1 @@ +.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/js-jasmine/coverage/lcov-report/prettify.js b/js-jasmine/coverage/lcov-report/prettify.js new file mode 100644 index 00000000..ef51e038 --- /dev/null +++ b/js-jasmine/coverage/lcov-report/prettify.js @@ -0,0 +1 @@ +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;V122)){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;arat[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=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=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=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=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*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\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=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]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\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/js-jasmine/coverage/lcov-report/sort-arrow-sprite.png b/js-jasmine/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 00000000..03f704a6 Binary files /dev/null and b/js-jasmine/coverage/lcov-report/sort-arrow-sprite.png differ diff --git a/js-jasmine/coverage/lcov-report/sorter.js b/js-jasmine/coverage/lcov-report/sorter.js new file mode 100644 index 00000000..6c5034e4 --- /dev/null +++ b/js-jasmine/coverage/lcov-report/sorter.js @@ -0,0 +1,158 @@ +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 + ''; + } + } + 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/js-jasmine/coverage/lcov-report/spec/index.html b/js-jasmine/coverage/lcov-report/spec/index.html new file mode 100644 index 00000000..d3d6a9f7 --- /dev/null +++ b/js-jasmine/coverage/lcov-report/spec/index.html @@ -0,0 +1,106 @@ + + + + Code coverage report for spec/ + + + + + + + +
+
+

+ all files spec/ +

+
+
+ 87.76% + Statements + 86/98 +
+
+ 0% + Branches + 0/2 +
+
+ 100% + Functions + 0/0 +
+
+ 88.66% + Lines + 86/97 +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
shop_spec.js
100%86/86100%0/0100%0/0100%86/86
texttest_fixture.js
0%0/120%0/2100%0/00%0/11
+
+
+ + + + + + + diff --git a/js-jasmine/coverage/lcov-report/spec/shop_spec.js.html b/js-jasmine/coverage/lcov-report/spec/shop_spec.js.html new file mode 100644 index 00000000..57a03fcd --- /dev/null +++ b/js-jasmine/coverage/lcov-report/spec/shop_spec.js.html @@ -0,0 +1,428 @@ + + + + Code coverage report for spec/shop_spec.js + + + + + + + +
+
+

+ all files / spec/ shop_spec.js +

+
+
+ 100% + Statements + 86/86 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 0/0 +
+
+ 100% + Lines + 86/86 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +  + + +  +  +  +  + + + + + +  + + + +  + + + + +  + + + + + +  + + + + + +  + + + + +  +  +  + + + +  + + + + + +  + + + + +  +  +  + + + +  + + + + + + +  +  +  + + + +  + + + + + +  + + + + + +  + + + + + +  + + + + + +  +  +  + + + +  + + + + + +  + + + + + +  +  +  +  + 
var { Shop } = require('../src/shop.js');
+ 
+describe('Shop', () => {
+  const item = {
+    name: 'foo',
+    sellIn: 5,
+    quality: 5
+  };
+  const gildedRose = new Shop([item]);
+  describe('.updateQuality', () => {
+    describe('Standard item', () => {
+      beforeEach(() => {
+        item.name = 'foo';
+      });
+      it("keeps name the same", () => {
+        const items = gildedRose.updateQuality();
+        expect(items[0].name).toEqual('foo');
+      });
+      it('decreases sellIn by 1', () => {
+        item.sellIn = 5;
+        const items = gildedRose.updateQuality();
+        expect(items[0].sellIn).toEqual(5 - 1);
+      });
+      it('decreases qualtiy by 1', () => {
+        item.sellIn = 5;
+        item.quality = 5;
+        const items = gildedRose.updateQuality();
+        expect(items[0].quality).toEqual(5 - 1);
+      });
+      it('when sell by passed, decreases quality by 2', () => {
+        item.sellIn = 0;
+        item.quality = 5;
+        const items = gildedRose.updateQuality();
+        expect(items[0].quality).toEqual(5 - 2);
+      });
+      it('will not reduce quality below 0', () => {
+        item.quality = 0;
+        const items = gildedRose.updateQuality();
+        expect(items[0].quality).toEqual(0);
+      });
+    });
+ 
+    describe('Aged Brie', () => {
+      beforeEach(() => {
+        item.name = 'Aged Brie';
+      });
+      it('will increase the quality by 1', () => {
+        item.sellIn = 5;
+        item.quality = 5;
+        const items = gildedRose.updateQuality();
+        expect(items[0].quality).toEqual(5 + 1);
+      });
+      it('will not increase quality above 50', () => {
+        item.quality = 50;
+        const items = gildedRose.updateQuality();
+        expect(items[0].quality).toEqual(50);
+      });
+    });
+ 
+    describe('Sulfuras', () => {
+      beforeEach(() => {
+        item.name = 'Sulfuras, Hand of Ragnaros';
+      });
+      it('will not change the sellIn or quality', () => {
+        item.sellIn = 5;
+        item.quality = 5;
+        const items = gildedRose.updateQuality();
+        expect(items[0].sellIn).toEqual(5);
+        expect(items[0].quality).toEqual(5);
+      });
+    });
+ 
+    describe('Backstage passes', () => {
+      beforeEach(() => {
+        item.name = 'Backstage passes to a TAFKAL80ETC concert';
+      });
+      it('will increase the quality by 1, more than 10 days before the concert', () => {
+        item.sellIn = 11;
+        item.quality = 5;
+        const items = gildedRose.updateQuality();
+        expect(items[0].quality).toEqual(6);
+      });
+      it('will increase the quality by 2, 10 - 6 days before the concert', () => {
+        item.sellIn = 8;
+        item.quality = 5;
+        const items = gildedRose.updateQuality();
+        expect(items[0].quality).toEqual(7);
+      });
+      it('will increase the quality by 3, 5 or less days before the concert', () => {
+        item.sellIn = 5;
+        item.quality = 5;
+        const items = gildedRose.updateQuality();
+        expect(items[0].quality).toEqual(8);
+      });
+      it('will decrease the quality to 0 after concert.', () => {
+        item.sellIn = 0;
+        item.quality = 5;
+        const items = gildedRose.updateQuality();
+        expect(items[0].quality).toEqual(0);
+      });
+    });
+ 
+    describe('Conjured', () => {
+      beforeEach(() => {
+        item.name = 'Conjured pickle';
+      });
+      it('will decrease the quality by 2 before sell by', () => {
+        item.sellIn = 5;
+        item.quality = 5;
+        const items = gildedRose.updateQuality();
+        expect(items[0].quality).toEqual(5 - 2);
+      });
+      it('will decrease the quality by 4 after sell by', () => {
+        item.sellIn = 0;
+        item.quality = 5;
+        const items = gildedRose.updateQuality();
+        expect(items[0].quality).toEqual(5 - 4);
+      });
+    });
+  });
+});
+ 
+
+
+ + + + + + + diff --git a/js-jasmine/coverage/lcov-report/spec/texttest_fixture.js.html b/js-jasmine/coverage/lcov-report/spec/texttest_fixture.js.html new file mode 100644 index 00000000..9db0a054 --- /dev/null +++ b/js-jasmine/coverage/lcov-report/spec/texttest_fixture.js.html @@ -0,0 +1,149 @@ + + + + Code coverage report for spec/texttest_fixture.js + + + + + + + +
+
+

+ all files / spec/ texttest_fixture.js +

+
+
+ 0% + Statements + 0/12 +
+
+ 0% + Branches + 0/2 +
+
+ 100% + Functions + 0/0 +
+
+ 0% + Lines + 0/11 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
 
+const { Shop } = require("../src/shop");
+const { Item } = require("../src/item");
+ 
+const items = [
+  new Item("+5 Dexterity Vest", 10, 20),
+  new Item("Aged Brie", 2, 0),
+  new Item("Elixir of the Mongoose", 5, 7),
+  new Item("Sulfuras, Hand of Ragnaros", 0, 80),
+  new Item("Sulfuras, Hand of Ragnaros", -1, 80),
+  new Item("Backstage passes to a TAFKAL80ETC concert", 15, 20),
+  new Item("Backstage passes to a TAFKAL80ETC concert", 10, 49),
+  new Item("Backstage passes to a TAFKAL80ETC concert", 5, 49),
+ 
+  // This Conjured item does not work properly yet
+  new Item("Conjured Mana Cake", 3, 6),
+];
+ 
+const days = Number(process.argv[2]) || 2;
+const gildedRose = new Shop(items);
+ 
+console.log("OMGHAI!");
+for (let day = 0; day < days; day++) {
+  console.log(`\n-------- day ${day} --------`);
+  console.log("name, sellIn, quality");
+  items.forEach(item => console.log(`${item.name}, ${item.sellIn}, ${item.quality}`));
+  gildedRose.updateQuality();
+}
+ 
+
+
+ + + + + + + diff --git a/js-jasmine/coverage/lcov-report/src/index.html b/js-jasmine/coverage/lcov-report/src/index.html new file mode 100644 index 00000000..05aaece9 --- /dev/null +++ b/js-jasmine/coverage/lcov-report/src/index.html @@ -0,0 +1,119 @@ + + + + Code coverage report for src/ + + + + + + + +
+
+

+ all files src/ +

+
+
+ 88.89% + Statements + 32/36 +
+
+ 100% + Branches + 10/10 +
+
+ 91.67% + Functions + 11/12 +
+
+ 88.89% + Lines + 32/36 +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
item.js
0%0/4100%0/00%0/10%0/4
shop.js
100%28/28100%8/8100%10/10100%28/28
standard_update.js
100%4/4100%2/2100%1/1100%4/4
+
+
+ + + + + + + diff --git a/js-jasmine/coverage/lcov-report/src/item.js.html b/js-jasmine/coverage/lcov-report/src/item.js.html new file mode 100644 index 00000000..c9b2c7dc --- /dev/null +++ b/js-jasmine/coverage/lcov-report/src/item.js.html @@ -0,0 +1,92 @@ + + + + Code coverage report for src/item.js + + + + + + + +
+
+

+ all files / src/ item.js +

+
+
+ 0% + Statements + 0/4 +
+
+ 100% + Branches + 0/0 +
+
+ 0% + Functions + 0/1 +
+
+ 0% + Lines + 0/4 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10  +  +  +  +  +  +  +  +  + 
class Item {
+  constructor(name, sellIn, quality) {
+    this.name = name;
+    this.sellIn = sellIn;
+    this.quality = quality;
+  }
+}
+module.exports = {
+  Item
+};
+
+
+ + + + + + + diff --git a/js-jasmine/coverage/lcov-report/src/item_types/aged_brie_update.js.html b/js-jasmine/coverage/lcov-report/src/item_types/aged_brie_update.js.html new file mode 100644 index 00000000..f5225858 --- /dev/null +++ b/js-jasmine/coverage/lcov-report/src/item_types/aged_brie_update.js.html @@ -0,0 +1,89 @@ + + + + Code coverage report for src/item_types/aged_brie_update.js + + + + + + + +
+
+

+ all files / src/item_types/ aged_brie_update.js +

+
+
+ 80% + Statements + 4/5 +
+
+ 50% + Branches + 1/2 +
+
+ 100% + Functions + 1/1 +
+
+ 80% + Lines + 4/5 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 + + +  +  + +  +  + 
exports.regex_matcher = /aged brie/;
+exports.qualityChange = function (sellIn) {
+  Iif (sellIn <= 0) {
+    return 2;
+  } else {
+    return 1;
+  }
+};
+ 
+
+
+ + + + + + + diff --git a/js-jasmine/coverage/lcov-report/src/item_types/backstage_pass_update.js.html b/js-jasmine/coverage/lcov-report/src/item_types/backstage_pass_update.js.html new file mode 100644 index 00000000..317ec18d --- /dev/null +++ b/js-jasmine/coverage/lcov-report/src/item_types/backstage_pass_update.js.html @@ -0,0 +1,101 @@ + + + + Code coverage report for src/item_types/backstage_pass_update.js + + + + + + + +
+
+

+ all files / src/item_types/ backstage_pass_update.js +

+
+
+ 100% + Statements + 9/9 +
+
+ 100% + Branches + 6/6 +
+
+ 100% + Functions + 1/1 +
+
+ 100% + Lines + 9/9 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 + + + + + + + +  + +  +  + 
exports.regex_matcher = /backstage pass/;
+exports.qualityChange = function (sellIn, quality) {
+  if (sellIn <= 0) {
+    return -quality;
+  } else if (sellIn <= 5) {
+    return 3;
+  } else if (sellIn <= 10) {
+    return 2;
+  } else {
+    return 1;
+  }
+};
+ 
+
+
+ + + + + + + diff --git a/js-jasmine/coverage/lcov-report/src/item_types/conjured_update.js.html b/js-jasmine/coverage/lcov-report/src/item_types/conjured_update.js.html new file mode 100644 index 00000000..47a4319d --- /dev/null +++ b/js-jasmine/coverage/lcov-report/src/item_types/conjured_update.js.html @@ -0,0 +1,89 @@ + + + + Code coverage report for src/item_types/conjured_update.js + + + + + + + +
+
+

+ all files / src/item_types/ conjured_update.js +

+
+
+ 100% + Statements + 5/5 +
+
+ 100% + Branches + 2/2 +
+
+ 100% + Functions + 1/1 +
+
+ 100% + Lines + 5/5 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 + + + +  + +  +  + 
exports.regex_matcher = /conjured/;
+exports.qualityChange = function (sellIn) {
+  if (sellIn <= 0) {
+    return -4;
+  } else {
+    return -2;
+  }
+};
+ 
+
+
+ + + + + + + diff --git a/js-jasmine/coverage/lcov-report/src/item_types/index.html b/js-jasmine/coverage/lcov-report/src/item_types/index.html new file mode 100644 index 00000000..651a5282 --- /dev/null +++ b/js-jasmine/coverage/lcov-report/src/item_types/index.html @@ -0,0 +1,132 @@ + + + + Code coverage report for src/item_types/ + + + + + + + +
+
+

+ all files src/item_types/ +

+
+
+ 95.45% + Statements + 21/22 +
+
+ 90% + Branches + 9/10 +
+
+ 100% + Functions + 4/4 +
+
+ 95.45% + Lines + 21/22 +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
aged_brie_update.js
80%4/550%1/2100%1/180%4/5
backstage_pass_update.js
100%9/9100%6/6100%1/1100%9/9
conjured_update.js
100%5/5100%2/2100%1/1100%5/5
sulfuras_update.js
100%3/3100%0/0100%1/1100%3/3
+
+
+ + + + + + + diff --git a/js-jasmine/coverage/lcov-report/src/item_types/sulfuras_update.js.html b/js-jasmine/coverage/lcov-report/src/item_types/sulfuras_update.js.html new file mode 100644 index 00000000..cde793b2 --- /dev/null +++ b/js-jasmine/coverage/lcov-report/src/item_types/sulfuras_update.js.html @@ -0,0 +1,74 @@ + + + + Code coverage report for src/item_types/sulfuras_update.js + + + + + + + +
+
+

+ all files / src/item_types/ sulfuras_update.js +

+
+
+ 100% + Statements + 3/3 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 1/1 +
+
+ 100% + Lines + 3/3 +
+
+
+
+

+
+
1 +2 +3 +4 + + + 
exports.regex_matcher = /sulfuras/;
+exports.qualityChange = function () {
+  return 0;
+};
+
+
+ + + + + + + diff --git a/js-jasmine/coverage/lcov-report/src/shop.js.html b/js-jasmine/coverage/lcov-report/src/shop.js.html new file mode 100644 index 00000000..489a233e --- /dev/null +++ b/js-jasmine/coverage/lcov-report/src/shop.js.html @@ -0,0 +1,269 @@ + + + + Code coverage report for src/shop.js + + + + + + + +
+
+

+ all files / src/ shop.js +

+
+
+ 100% + Statements + 28/28 +
+
+ 100% + Branches + 8/8 +
+
+ 100% + Functions + 10/10 +
+
+ 100% + Lines + 28/28 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +  +  + +  + + +  +  + +  +  + + + +  +  +14× +14× +  +14× +  +  +  +14× +14× +  +  +  +14× +14× +  +  +  +14× +40× + +  +  + +  +  +  +14× +13× +  +  +  +  +14× +14× +  +  +  +14× + +  +  +  +  +14× + +  +  +  + +  +  + 
var glob = require('glob')
+  , path = require('path');
+ 
+let itemTypes = [];
+ 
+glob.sync('./src/item_types/**/*.js').forEach(function (file) {
+  itemTypes.push(require(path.resolve(file)));
+});
+ 
+const standardItem = require('./standard_update.js');
+class Shop {
+  constructor(items = []) {
+    this.items = items;
+    this.MAX_QUALITY = 50;
+    this.MIN_QUALITY = 0;
+  }
+  updateQuality() {
+    this.items.forEach(item =>
+      this._updateItem(item)
+    );
+    return this.items;
+  }
+ 
+  _updateItem(item) {
+    this._updateItemQuality(item);
+    this._updateItemSellIn(item);
+  }
+ 
+  _updateItemQuality(item) {
+    this._conditionallyUpdateQuality(item);
+    this._checkQualityBounds(item);
+  }
+ 
+  _conditionallyUpdateQuality(item) {
+    for (const itemType of itemTypes) {
+      if (item.name.toLowerCase().match(itemType.regex_matcher)) {
+        return item.quality += itemType.qualityChange(item.sellIn, item.quality);
+      }
+    }
+    return item.quality += standardItem.qualityChange(item.sellIn);
+  }
+ 
+  _updateItemSellIn(item) {
+    if (item.name != 'Sulfuras, Hand of Ragnaros') {
+      item.sellIn = item.sellIn - 1;
+    }
+  }
+ 
+  _checkQualityBounds(item) {
+    this._checkMaxQuality(item);
+    this._checkMinQuality(item);
+  }
+ 
+  _checkMaxQuality(item) {
+    if (item.quality > this.MAX_QUALITY) {
+      item.quality = this.MAX_QUALITY;
+    }
+  }
+ 
+  _checkMinQuality(item) {
+    if (item.quality < this.MIN_QUALITY) {
+      item.quality = this.MIN_QUALITY;
+    }
+  }
+}
+module.exports = {
+  Shop
+};
+ 
+
+
+ + + + + + + diff --git a/js-jasmine/coverage/lcov-report/src/standard_update.js.html b/js-jasmine/coverage/lcov-report/src/standard_update.js.html new file mode 100644 index 00000000..a7c3219c --- /dev/null +++ b/js-jasmine/coverage/lcov-report/src/standard_update.js.html @@ -0,0 +1,83 @@ + + + + Code coverage report for src/standard_update.js + + + + + + + +
+
+

+ all files / src/ standard_update.js +

+
+
+ 100% + Statements + 4/4 +
+
+ 100% + Branches + 2/2 +
+
+ 100% + Functions + 1/1 +
+
+ 100% + Lines + 4/4 +
+
+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 + + +  + +  + 
exports.qualityChange = function (sellIn) {
+  if (sellIn <= 0) {
+    return -2;
+  } else {
+    return -1;
+  }
+};
+
+
+ + + + + + + diff --git a/js-jasmine/coverage/lcov.info b/js-jasmine/coverage/lcov.info new file mode 100644 index 00000000..471d1e1f --- /dev/null +++ b/js-jasmine/coverage/lcov.info @@ -0,0 +1,290 @@ +TN: +SF:/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/spec/shop_spec.js +FNF:0 +FNH:0 +DA:1,1 +DA:3,1 +DA:4,1 +DA:9,1 +DA:10,1 +DA:11,1 +DA:12,1 +DA:13,5 +DA:15,1 +DA:16,1 +DA:17,1 +DA:19,1 +DA:20,1 +DA:21,1 +DA:22,1 +DA:24,1 +DA:25,1 +DA:26,1 +DA:27,1 +DA:28,1 +DA:30,1 +DA:31,1 +DA:32,1 +DA:33,1 +DA:34,1 +DA:36,1 +DA:37,1 +DA:38,1 +DA:39,1 +DA:43,1 +DA:44,1 +DA:45,2 +DA:47,1 +DA:48,1 +DA:49,1 +DA:50,1 +DA:51,1 +DA:53,1 +DA:54,1 +DA:55,1 +DA:56,1 +DA:60,1 +DA:61,1 +DA:62,1 +DA:64,1 +DA:65,1 +DA:66,1 +DA:67,1 +DA:68,1 +DA:69,1 +DA:73,1 +DA:74,1 +DA:75,4 +DA:77,1 +DA:78,1 +DA:79,1 +DA:80,1 +DA:81,1 +DA:83,1 +DA:84,1 +DA:85,1 +DA:86,1 +DA:87,1 +DA:89,1 +DA:90,1 +DA:91,1 +DA:92,1 +DA:93,1 +DA:95,1 +DA:96,1 +DA:97,1 +DA:98,1 +DA:99,1 +DA:103,1 +DA:104,1 +DA:105,2 +DA:107,1 +DA:108,1 +DA:109,1 +DA:110,1 +DA:111,1 +DA:113,1 +DA:114,1 +DA:115,1 +DA:116,1 +DA:117,1 +LF:86 +LH:86 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/shop.js +FN:6,(anonymous_1) +FN:12,(anonymous_2) +FN:17,(anonymous_3) +FN:24,(anonymous_4) +FN:29,(anonymous_5) +FN:34,(anonymous_6) +FN:43,(anonymous_7) +FN:49,(anonymous_8) +FN:54,(anonymous_9) +FN:60,(anonymous_10) +FNF:10 +FNH:10 +FNDA:4,(anonymous_1) +FNDA:1,(anonymous_2) +FNDA:14,(anonymous_3) +FNDA:14,(anonymous_4) +FNDA:14,(anonymous_5) +FNDA:14,(anonymous_6) +FNDA:14,(anonymous_7) +FNDA:14,(anonymous_8) +FNDA:14,(anonymous_9) +FNDA:14,(anonymous_10) +DA:1,1 +DA:4,1 +DA:6,1 +DA:7,4 +DA:10,1 +DA:13,1 +DA:14,1 +DA:15,1 +DA:18,14 +DA:19,14 +DA:21,14 +DA:25,14 +DA:26,14 +DA:30,14 +DA:31,14 +DA:35,14 +DA:36,40 +DA:37,9 +DA:40,5 +DA:44,14 +DA:45,13 +DA:50,14 +DA:51,14 +DA:55,14 +DA:56,1 +DA:61,14 +DA:62,1 +DA:66,1 +LF:28 +LH:28 +BRDA:36,1,0,9 +BRDA:36,1,1,31 +BRDA:44,2,0,13 +BRDA:44,2,1,1 +BRDA:55,3,0,1 +BRDA:55,3,1,13 +BRDA:61,4,0,1 +BRDA:61,4,1,13 +BRF:8 +BRH:8 +end_of_record +TN: +SF:/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/item_types/aged_brie_update.js +FN:2,(anonymous_1) +FNF:1 +FNH:1 +FNDA:2,(anonymous_1) +DA:1,1 +DA:2,1 +DA:3,2 +DA:4,0 +DA:6,2 +LF:5 +LH:4 +BRDA:3,1,0,0 +BRDA:3,1,1,2 +BRF:2 +BRH:1 +end_of_record +TN: +SF:/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/item_types/backstage_pass_update.js +FN:2,(anonymous_1) +FNF:1 +FNH:1 +FNDA:4,(anonymous_1) +DA:1,1 +DA:2,1 +DA:3,4 +DA:4,1 +DA:5,3 +DA:6,1 +DA:7,2 +DA:8,1 +DA:10,1 +LF:9 +LH:9 +BRDA:3,1,0,1 +BRDA:3,1,1,3 +BRDA:5,2,0,1 +BRDA:5,2,1,2 +BRDA:7,3,0,1 +BRDA:7,3,1,1 +BRF:6 +BRH:6 +end_of_record +TN: +SF:/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/item_types/conjured_update.js +FN:2,(anonymous_1) +FNF:1 +FNH:1 +FNDA:2,(anonymous_1) +DA:1,1 +DA:2,1 +DA:3,2 +DA:4,1 +DA:6,1 +LF:5 +LH:5 +BRDA:3,1,0,1 +BRDA:3,1,1,1 +BRF:2 +BRH:2 +end_of_record +TN: +SF:/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/item_types/sulfuras_update.js +FN:2,(anonymous_1) +FNF:1 +FNH:1 +FNDA:1,(anonymous_1) +DA:1,1 +DA:2,1 +DA:3,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/standard_update.js +FN:1,(anonymous_1) +FNF:1 +FNH:1 +FNDA:5,(anonymous_1) +DA:1,1 +DA:2,5 +DA:3,2 +DA:5,3 +LF:4 +LH:4 +BRDA:2,1,0,2 +BRDA:2,1,1,3 +BRF:2 +BRH:2 +end_of_record +TN: +SF:/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/spec/texttest_fixture.js +FNF:0 +FNH:0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:19,0 +DA:20,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +LF:11 +LH:0 +BRDA:19,1,0,0 +BRDA:19,1,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:/Users/dan/Google Drive/Documents/Work/Makers/Projects/week10/GildedRose-Refactoring-Kata/js-jasmine/src/item.js +FN:2,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:3,0 +DA:4,0 +DA:5,0 +DA:8,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record diff --git a/js-jasmine/package-lock.json b/js-jasmine/package-lock.json index 3b5a0fa1..351ca7db 100644 --- a/js-jasmine/package-lock.json +++ b/js-jasmine/package-lock.json @@ -14,7 +14,9 @@ "babel-register": "^6.26.0", "eslint": "^7.14.0", "glob": "^7.1.6", + "istanbul": "^0.4.5", "jasmine": "^3.2.0", + "jasmine-node": "^3.0.0", "path": "^0.12.7" } }, @@ -147,6 +149,12 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true + }, "node_modules/acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -184,6 +192,16 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.4.2" + } + }, "node_modules/ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -229,6 +247,12 @@ "node": ">=4" } }, + "node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, "node_modules/babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -905,6 +929,19 @@ "node": ">=0.10.0" } }, + "node_modules/coffeescript": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz", + "integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==", + "dev": true, + "bin": { + "cake": "bin/cake", + "coffee": "bin/coffee" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -1029,6 +1066,115 @@ "node": ">=0.8.0" } }, + "node_modules/escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "dependencies": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=0.12.0" + }, + "optionalDependencies": { + "source-map": "~0.2.0" + } + }, + "node_modules/escodegen/node_modules/esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true, + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/eslint": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.14.0.tgz", @@ -1431,6 +1577,18 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "node_modules/gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "dependencies": { + "globule": "^1.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1472,6 +1630,60 @@ "node": ">=0.10.0" } }, + "node_modules/globule": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", + "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", + "dev": true, + "dependencies": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/handlebars": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -1610,6 +1822,94 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "node_modules/istanbul": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", + "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", + "deprecated": "This module is no longer maintained, try this instead:\n npm i nyc\nVisit https://istanbul.js.org/integrations for other alternatives.", + "dev": true, + "dependencies": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "istanbul": "lib/cli.js" + } + }, + "node_modules/istanbul/node_modules/esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul/node_modules/glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/istanbul/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/istanbul/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/jasmine": { "version": "3.6.3", "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.6.3.tgz", @@ -1632,6 +1932,57 @@ "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==", "dev": true }, + "node_modules/jasmine-growl-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jasmine-growl-reporter/-/jasmine-growl-reporter-2.0.0.tgz", + "integrity": "sha512-RYwVfPaGgxQQSHDOt6jQ99/KAkFQ/Fiwg/AzBS+uO9A4UhGhxb7hwXaUUSU/Zs0MxBoFNqmIRC+7P4/+5O3lXg==", + "dev": true, + "dependencies": { + "growl": "^1.10.5" + } + }, + "node_modules/jasmine-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jasmine-node/-/jasmine-node-3.0.0.tgz", + "integrity": "sha512-vUa5Q7bQYwHHqi6FlJYndiKqZp+d+c3MKe0QUMwwrC4JRmoRV3zkg0buxB/uQ6qLh0NO34TNstpAnvaZ6xGlAA==", + "dev": true, + "dependencies": { + "coffeescript": "~1.12.7", + "gaze": "~1.1.2", + "jasmine-growl-reporter": "~2.0.0", + "jasmine-reporters": "~1.0.0", + "mkdirp": "~0.3.5", + "requirejs": "~2.3.6", + "underscore": "~1.9.1", + "walkdir": "~0.0.12" + }, + "bin": { + "jasmine-node": "bin/jasmine-node" + } + }, + "node_modules/jasmine-node/node_modules/mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "dev": true + }, + "node_modules/jasmine-reporters": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jasmine-reporters/-/jasmine-reporters-1.0.2.tgz", + "integrity": "sha1-q2E+1Zd9x0h+hbPBL2qOqNsq3jE=", + "dev": true, + "dependencies": { + "mkdirp": "~0.3.5" + } + }, + "node_modules/jasmine-reporters/node_modules/mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "dev": true + }, "node_modules/js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -1766,6 +2117,24 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1980,6 +2349,25 @@ "node": ">=0.10.0" } }, + "node_modules/requirejs": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz", + "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==", + "dev": true, + "bin": { + "r_js": "bin/r.js", + "r.js": "bin/r.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -2224,6 +2612,25 @@ "node": ">=8" } }, + "node_modules/uglify-js": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.1.tgz", + "integrity": "sha512-o8lHP20KjIiQe5b/67Rh68xEGRrc2SRsCuuoYclXXoC74AfSRGblU1HKzJWH3HxPZ+Ort85fWHpSX7KwBUC9CQ==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/underscore": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz", + "integrity": "sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ==", + "dev": true + }, "node_modules/uri-js": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", @@ -2254,6 +2661,15 @@ "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", "dev": true }, + "node_modules/walkdir": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.12.tgz", + "integrity": "sha512-HFhaD4mMWPzFSqhpyDG48KDdrjfn409YQuVW7ckZYhW4sE87mYtWifdB/+73RA7+p4s4K18n5Jfx1kHthE1gBw==", + "dev": true, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2278,6 +2694,12 @@ "node": ">=0.10.0" } }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -2411,6 +2833,12 @@ } } }, + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true + }, "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -2436,6 +2864,13 @@ "uri-js": "^4.2.2" } }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true, + "optional": true + }, "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -2469,6 +2904,12 @@ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -3133,6 +3574,12 @@ "supports-color": "^2.0.0" } }, + "coffeescript": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz", + "integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==", + "dev": true + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -3240,6 +3687,82 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "requires": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, "eslint": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.14.0.tgz", @@ -3544,6 +4067,15 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -3573,6 +4105,44 @@ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, + "globule": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", + "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "handlebars": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -3678,6 +4248,73 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "istanbul": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", + "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", + "dev": true, + "requires": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "jasmine": { "version": "3.6.3", "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.6.3.tgz", @@ -3694,6 +4331,56 @@ "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==", "dev": true }, + "jasmine-growl-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jasmine-growl-reporter/-/jasmine-growl-reporter-2.0.0.tgz", + "integrity": "sha512-RYwVfPaGgxQQSHDOt6jQ99/KAkFQ/Fiwg/AzBS+uO9A4UhGhxb7hwXaUUSU/Zs0MxBoFNqmIRC+7P4/+5O3lXg==", + "dev": true, + "requires": { + "growl": "^1.10.5" + } + }, + "jasmine-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jasmine-node/-/jasmine-node-3.0.0.tgz", + "integrity": "sha512-vUa5Q7bQYwHHqi6FlJYndiKqZp+d+c3MKe0QUMwwrC4JRmoRV3zkg0buxB/uQ6qLh0NO34TNstpAnvaZ6xGlAA==", + "dev": true, + "requires": { + "coffeescript": "~1.12.7", + "gaze": "~1.1.2", + "jasmine-growl-reporter": "~2.0.0", + "jasmine-reporters": "~1.0.0", + "mkdirp": "~0.3.5", + "requirejs": "~2.3.6", + "underscore": "~1.9.1", + "walkdir": "~0.0.12" + }, + "dependencies": { + "mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=", + "dev": true + } + } + }, + "jasmine-reporters": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jasmine-reporters/-/jasmine-reporters-1.0.2.tgz", + "integrity": "sha1-q2E+1Zd9x0h+hbPBL2qOqNsq3jE=", + "dev": true, + "requires": { + "mkdirp": "~0.3.5" + }, + "dependencies": { + "mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=", + "dev": true + } + } + }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -3804,6 +4491,21 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3972,6 +4674,18 @@ "is-finite": "^1.0.0" } }, + "requirejs": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz", + "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==", + "dev": true + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -4157,6 +4871,19 @@ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true }, + "uglify-js": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.1.tgz", + "integrity": "sha512-o8lHP20KjIiQe5b/67Rh68xEGRrc2SRsCuuoYclXXoC74AfSRGblU1HKzJWH3HxPZ+Ort85fWHpSX7KwBUC9CQ==", + "dev": true, + "optional": true + }, + "underscore": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz", + "integrity": "sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ==", + "dev": true + }, "uri-js": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", @@ -4189,6 +4916,12 @@ "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", "dev": true }, + "walkdir": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.12.tgz", + "integrity": "sha512-HFhaD4mMWPzFSqhpyDG48KDdrjfn409YQuVW7ckZYhW4sE87mYtWifdB/+73RA7+p4s4K18n5Jfx1kHthE1gBw==", + "dev": true + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4204,6 +4937,12 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/js-jasmine/package.json b/js-jasmine/package.json index 15cb1fc6..026b5c66 100644 --- a/js-jasmine/package.json +++ b/js-jasmine/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "description": "Gilded Rose kata in Javascript with Jasmine", "scripts": { - "test": "jasmine" + "test": "istanbul cover --include-all-sources jasmine-node spec" }, "repository": { "type": "git", @@ -26,7 +26,9 @@ "babel-register": "^6.26.0", "eslint": "^7.14.0", "glob": "^7.1.6", + "istanbul": "^0.4.5", "jasmine": "^3.2.0", + "jasmine-node": "^3.0.0", "path": "^0.12.7" }, "babel": { @@ -42,4 +44,4 @@ ], "plugins": [] } -} +} \ No newline at end of file