-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.js.map
1 lines (1 loc) · 21.9 KB
/
main.js.map
1
{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.scss","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/code.directive.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","module.exports = \"<div id=\\\"container\\\">\\n <header [style.height.px]=\\\"headerHeight\\\">\\n <img src=\\\"../assets/testy_white.svg\\\" />\\n <div id=\\\"tagline\\\" [style.height.em]=\\\"taglineHeight\\\" [style.margin-bottom.em]=\\\"taglineHeight\\\">\\n The modern TypeScript testing framework.\\n </div>\\n\\n <div class=buttons>\\n <ul>\\n <li>\\n <a href=\\\"https://github.com/Testy/TestyTs\\\">View on GitHub</a>\\n </li>\\n <li>-</li>\\n <li>\\n <a href=\\\"https://marketplace.visualstudio.com/items?itemName=Testy.vscode-testyts-test-adapter\\\">Vs Code Tests\\n Explorer</a>\\n </li>\\n </ul>\\n </div>\\n </header>\\n\\n <div id=\\\"content\\\" [style.padding-top.px]=\\\"contentPaddingTop + 48\\\">\\n <div class=\\\"panel\\\">\\n <h1> What is Testy.Ts? </h1>\\n\\n Testy.Ts is a modern TypeScript testing framework.\\n </div>\\n\\n <div class=\\\"panel\\\">\\n\\n <h1>Installation</h1>\\n <div class=\\\"grid\\\">\\n <div class=\\\"left\\\">\\n To install Testy.Ts, run one of the following lines.\\n </div>\\n\\n <div class=\\\"right\\\">\\n <pre class=console>\\n$ npm i --save-dev testyts <span class=comment>// To install locally</span>\\n$ npm i -g testyts <span class=comment>// To install globally</span></pre>\\n </div>\\n </div>\\n\\n <h1>Setup</h1>\\n <div class=\\\"grid\\\">\\n <div class=\\\"left\\\">\\n To generate a <code>testy.json</code> configuration file, use the following command.\\n </div>\\n\\n <div class=\\\"right\\\">\\n <pre class=console>\\n$ testyts init</pre>\\n </div>\\n\\n <div class=\\\"left\\\">\\n Testy.Ts requires <code>experimentalDecorators</code>. To use breakpoints while debugging in Visual Studio\\n Code,\\n you must enable <code>sourceMap</code>.\\n </div>\\n\\n <div class=\\\"right\\\">\\n <pre class=console>\\n{{'{'}}\\n \\\"compilerOptions\\\": {{'{'}}\\n \\\"target\\\": \\\"es5\\\",\\n \\\"experimentalDecorators\\\": true,\\n \\\"sourceMap\\\": true\\n }\\n}</pre>\\n </div>\\n\\n </div>\\n\\n <h1>Writing your first test</h1>\\n <div class=\\\"grid\\\">\\n <div class=\\\"left\\\">\\n Writing tests with Testy.Ty is simple. <strong>Don't forget to export your test suites</strong>. Otherwise,\\n they won't be discovered by\\n the test runner.\\n </div>\\n <div class=\\\"right\\\">\\n <pre code>\\n@TestSuite()\\nexport class MyTestSuite {{'{'}} \\n\\n @Test()\\n quickMaths() {{'{'}}\\n expect.toBeEqual(1 + 1, 2);\\n }\\n}</pre>\\n </div>\\n </div>\\n\\n <h1>Run those tests</h1>\\n <div class=\\\"grid\\\">\\n <div class=\\\"left\\\">\\n To run your Testy.Ts tests, simply run the following command. Testy.Ts uses the \\\"testy.json\\\" file contained\\n in the current\\n directory by default. Testy.Ts will fail if there is no such file.\\n </div>\\n\\n <div class=\\\"right\\\">\\n <pre class=console>\\n$ testyts\\n$ testyts --config ./config.json <span class=comment>// Custom config file</span></pre>\\n </div>\\n </div>\\n\\n <h1>Setup and teardown methods</h1>\\n <div class=\\\"grid\\\">\\n <div class=\\\"left\\\">\\n Testy.Ts provides setup and teardown hooks.\\n </div>\\n <div class=\\\"right\\\">\\n <pre code>\\n@TestSuite()\\nexport class MyTestSuite {{'{'}}\\n \\n @BeforeAll()\\n beforeAll() {{'{'}}\\n // This is executed before all the tests\\n }\\n \\n @BeforeEach()\\n beforeEach() {{'{'}}\\n // This is executed before each test\\n }\\n \\n @AfterEach()\\n afterEach() {{'{'}}\\n // This is executed after each test\\n }\\n \\n @AfterAll()\\n afterAll() {{'{'}}\\n // This is executed after all the tests\\n }\\n}</pre>\\n </div>\\n </div>\\n\\n <h1>Base test suites</h1>\\n <div class=\\\"grid\\\">\\n <div class=\\\"left\\\">\\n This is where stuff gets interesting. Testy.Ts lets you use inheritance. This means you don't have to\\n duplicate complex\\n setup, teardown and helper functions. You also don't have to put all of your tests in the same class.\\n </div>\\n <div class=\\\"right\\\">\\n <pre code>\\nclass MyBaseTestSuite {{'{'}}\\n // Setup, teardown and helpers extravaganza\\n}\\n \\n@TestSuite()\\nclass MyTestSuite extends MyBaseTestSuite {{'{'}}\\n // My tests\\n}</pre>\\n </div>\\n </div>\\n\\n <h1>Asynchronous stuff</h1>\\n <div class=\\\"grid\\\">\\n <div class=\\\"left\\\">\\n Asynchronous tests, setup and teardown methods are supported out of the box. Just make your method async.\\n </div>\\n <div class=\\\"right\\\">\\n <pre code>\\n@TestSuite()\\nexport class MyTestSuite {{'{'}}\\n\\n @Test()\\n async asyncTest() {{'{'}}\\n // Asynchronous stuff \\n }\\n}</pre>\\n </div>\\n </div>\\n\\n\\n <h1>Timeouts</h1>\\n <div class=\\\"grid\\\">\\n <div class=\\\"left\\\">\\n If a test is taking too long to complete, it will fail automatically. The default timeout it 2000 ms, but you\\n can configure it.\\n </div>\\n <div class=\\\"right\\\">\\n <pre code>\\n@TestSuite()\\nexport class MyTestSuite {{'{'}}\\n @Test(undefined, undefined, 10000) // Really slow test\\n slowTest() {{'{'}}\\n // Some test\\n }\\n}</pre>\\n </div>\\n </div>\\n\\n <h1>Testcases</h1>\\n <div class=\\\"grid\\\">\\n <div class=\\\"left\\\">\\n Testy.Ts allows you to run the same test multiple times with different inputs and expectations. Just pass an\\n array of <code>TestCase</code> to\\n the <code>Test</code> decorator.\\n\\n <br>\\n <br> A <code>TestCase</code> consists of a name and one or more arguments. The arguments are passed to your\\n test\\n method.\\n </div>\\n <div class=\\\"right\\\">\\n <pre code>\\n@TestSuite()\\nexport class MyTestSuite {{'{'}}\\n\\n @Test('My test', [\\n new TestCase('Two plus two is four', 2, 2, 4),\\n new TestCase(`Minus one that's three`, 4, -1, 3)\\n ])\\n onePlusOne(a: number, b: number, result: number) {{'{'}}\\n expect.toBeEqual(a + b, result);\\n }\\n}</pre>\\n </div>\\n </div>\\n\\n <h1>Asserting</h1>\\n <div class=\\\"grid\\\">\\n <div class=\\\"left\\\">\\n Testy.Ts comes with a whole bunch of assertion methods and also a dash of syntactic sugar sexyness.\\n </div>\\n <div class=\\\"right\\\">\\n <pre code>\\nexpect.toBeTrue(2 > 1);\\nexpect.toBeEqual('a', 'a');\\nexpect.not.toBeEqual('p', 'np');\\nexpect.toThrow(() => someNastyMethod());\\nexpect.toBeSorted.inAscendingOrder([0, 1, 1, 2, 3, 5, 8]);\\n// More!</pre>\\n </div>\\n </div>\\n\\n <h1>Focusing and ignoring tests</h1>\\n <div class=\\\"grid\\\">\\n <div class=\\\"left\\\">\\n You can ignore tests by adding an\\n <code>X</code> before a test suite or a specific <code>Test</code> decorator. Ignored tests will still show\\n up\\n in the test report, but they will be marked as ignored.\\n </div>\\n <div class=\\\"right\\\">\\n <pre code>\\n@XTestSuite() // This test suite will be ignored\\nexport class MyTestSuite {{'{'}} \\n // My tests\\n}\\n \\n@TestSuite()\\nexport class MyTestSuite {{'{'}}\\n\\n @XTest() // This test will be ignored\\n onePlusOne() {{'{'}}\\n // Some test\\n }\\n}</pre>\\n </div>\\n\\n <div class=\\\"left\\\">\\n You can also focus tests by adding an <code>F</code> before a test suite or a specific <code>Test</code>\\n decorator.\\n If one or more test or test suites are focused, only those will be ran. The others will be reported as\\n ignored.\\n </div>\\n <div class=\\\"right\\\">\\n <pre code>\\n @FTestSuite() // This test suite will be focused\\n export class MyTestSuite {{'{'}} \\n // My tests\\n }\\n \\n @TestSuite()\\n export class MyTestSuite {{'{'}}\\n \\n @FTest() // This test will be focused\\n onePlusOne() {{'{'}}\\n // Some test\\n }\\n }</pre>\\n </div>\\n </div>\\n\\n <h1>Custom test names</h1>\\n <div class=\\\"grid\\\">\\n <div class=\\\"left\\\">\\n The tests and test suites names are inferred from the method or class name by default. You can specify a\\n custom name if you're\\n into that.\\n </div>\\n <div class=\\\"right\\\">\\n <pre code>\\n@TestSuite('My glorious test suite')\\nexport class MyTestSuite {{'{'}}\\n \\n @Test('Adding one plus one, should equal two')\\n onePlusOne() {{'{'}}\\n // Assert\\n expect.toBeEqual(1 + 1, 2);\\n }\\n}</pre>\\n </div>\\n </div>\\n <h1>Still not convinced?</h1>\\n <div>\\n Here's a <a href=\\\"https://repl.it/@Aboisier/TestyTs-Playground\\\">REPL</a> you can use to play around with Testy.Ts online, no strings attached.\\n </div>\\n <div class=\\\"center\\\">\\n <a class=btn target=\\\"_blank\\\" href=\\\"https://repl.it/@Aboisier/TestyTs-Playground\\\"> <i class=\\\"fas fa-external-link-alt\\\"></i> Try <strong>Testy.Ts</strong> on repl.it!</a>\\n </div>\\n </div>\\n <footer>\\n License under the <a href=\\\"https://github.com/Testy/TestyTs/blob/master/LICENSE\\\">ISC License</a> (ISC) -\\n Copyright\\n © 2019, Antoine Boisier-Michaud\\n </footer>\\n </div>\\n</div>\"","module.exports = \"#container {\\n width: 100%; }\\n\\n#content {\\n max-width: 1000px;\\n min-width: 700px;\\n margin: 0 auto; }\\n\\n#content .panel {\\n overflow: visible;\\n margin-bottom: 2em;\\n line-height: 2em;\\n margin: 0 25px 20px 25px; }\\n\\n.grid {\\n margin-bottom: 30px; }\\n\\n@media screen and (min-width: 700px) {\\n .panel .grid {\\n display: -ms-grid;\\n display: grid;\\n -ms-grid-columns: 45% auto;\\n grid-template-columns: 45% auto;\\n gap: 30px;\\n text-align: justify; } }\\n\\nheader {\\n position: fixed;\\n width: 100%;\\n color: white;\\n background: linear-gradient(45deg, #009b55 0%, #0e753f 100%);\\n padding: 4px 0;\\n padding-bottom: 60px;\\n box-shadow: 0px -2px 12px rgba(0, 0, 0, 0.75);\\n text-align: center;\\n min-height: 4em; }\\n\\nheader #tagline {\\n font-size: 1.15em;\\n overflow: hidden;\\n color: rgba(255, 255, 255, 0.8); }\\n\\n@media screen and (max-width: 700px) {\\n header #tagline {\\n margin-left: 10px;\\n font-size: 1em; } }\\n\\nheader img {\\n text-align: left;\\n height: 100%;\\n min-width: 100px;\\n min-height: 3rem;\\n max-width: 100%;\\n max-height: 175px; }\\n\\n@media screen and (max-width: 700px) {\\n header img {\\n height: 100%;\\n min-width: 80px;\\n max-width: 100%;\\n max-height: 150px; } }\\n\\nheader ul {\\n list-style-type: none;\\n margin: 0;\\n padding: 0; }\\n\\nheader ul li {\\n display: inline; }\\n\\nheader ul li a {\\n color: white;\\n font-size: 1.15em;\\n padding: 8px;\\n text-decoration: none; }\\n\\nheader ul li a:hover {\\n color: #e6f5e6; }\\n\\nh1 {\\n font-size: 1.5em;\\n line-height: 2.25rem;\\n font-weight: 600;\\n margin-bottom: 0.33rem; }\\n\\npre {\\n background-color: #232323;\\n color: white;\\n font-family: UbuntuMono;\\n line-height: 1.25em;\\n border-radius: 6px;\\n padding: 0.66rem;\\n width: 100%;\\n overflow-x: auto; }\\n\\npre .comment {\\n font-family: UbuntuMono;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n color: #b4b4b4;\\n background-color: transparent; }\\n\\n.center {\\n text-align: center; }\\n\\n.btn {\\n display: inline-block;\\n text-decoration: none;\\n background: #009b55;\\n color: white;\\n font-weight: 500;\\n font-size: 1.2em;\\n padding: 12px 15px;\\n border: none;\\n cursor: pointer;\\n border-radius: 14px;\\n box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.25);\\n margin: 15px;\\n outline: none;\\n transition: all 0.5s; }\\n\\n.btn:hover {\\n box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.15);\\n background: #00aa5d; }\\n\\n.btn strong {\\n font-weight: 700; }\\n\\n.btn .fa {\\n margin-top: 1px;\\n font-size: 0.7em; }\\n\\nfooter {\\n color: rgba(0, 0, 0, 0.35);\\n padding: 15px 20%;\\n text-align: center;\\n font-size: 0.75em;\\n line-height: 1.25em; }\\n\\nfooter a {\\n color: rgba(0, 0, 0, 0.35);\\n font-size: inherit; }\\n\\nfooter a:hover {\\n color: rgba(0, 0, 0, 0.45); }\\n\"","import { Component, OnInit, HostListener, Inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/platform-browser';\nimport { interval } from 'rxjs';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent implements OnInit {\n private readonly minHeaderHeight = 86;\n private readonly minPaddingTop = 1;\n private readonly maxHeaderHeight = 250;\n\n private scrollOffset = 0;\n\n public taglineHeight = 1;\n public headerHeight = this.maxHeaderHeight;\n public contentPaddingTop = this.maxHeaderHeight;\n\n constructor(@Inject(DOCUMENT) private document: Document) {\n\n }\n\n ngOnInit(): void {\n interval(10).subscribe(() => this.adjustHeader());\n }\n\n private adjustHeader() {\n const taglineHeightTarget = this.scrollOffset < 8 ? 1 : 0;\n this.taglineHeight = this.lerp(this.taglineHeight, taglineHeightTarget, 0.04);\n\n const headerHeightTarget = this.scrollOffset < 8 ? this.maxHeaderHeight : this.minHeaderHeight;\n this.headerHeight = this.lerp(this.headerHeight, headerHeightTarget, 0.04);\n\n const paddingTopTarget = this.scrollOffset < 8 ? this.maxHeaderHeight : this.minPaddingTop;\n this.contentPaddingTop = this.lerp(this.contentPaddingTop, paddingTopTarget, 0.04);\n }\n\n private lerp(a, b, t) {\n return a + t * (b - a);\n }\n\n @HostListener('window:scroll', [])\n onWindowScroll() {\n const scrollOffset = this.document.documentElement.scrollTop || this.document.body.scrollTop || 0;\n this.scrollOffset = scrollOffset;\n }\n}\n","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\n\nimport { AppComponent } from './app.component';\nimport { CodeDirective } from './code.directive';\n\n@NgModule({\n declarations: [\n AppComponent,\n CodeDirective\n ],\n imports: [\n BrowserModule\n ],\n providers: [],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { Input, AfterViewInit, ElementRef, HostListener, Directive } from '@angular/core';\nimport * as highlight from 'highlight.js';\n\n@Directive({\n selector: '[code]'\n})\n\nexport class CodeDirective implements AfterViewInit {\n\n private el: HTMLElement;\n\n constructor(public element: ElementRef) {\n this.el = element.nativeElement;\n }\n\n ngAfterViewInit(): void {\n this.toMarkdown();\n }\n\n private toMarkdown() {\n this.el.innerHTML = highlight.highlight('typescript', this.el.innerText).value;\n }\n}\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n\n"],"sourceRoot":""}