mirror of
https://github.com/sharkdp/bat.git
synced 2025-06-17 22:05:52 +01:00
Added a JavaScript test file
This commit is contained in:
114
tests/syntax-tests/source/JavaScript/test.js
Normal file
114
tests/syntax-tests/source/JavaScript/test.js
Normal file
@ -0,0 +1,114 @@
|
||||
let letNumber = 1000;
|
||||
const constNumber = 10;
|
||||
var varNumber = -1234;
|
||||
const constNegativeFloat = -1.23;
|
||||
var tooMuch = Infinity;
|
||||
nothing = null;
|
||||
let listofthings = ["thing", 'thing2', `foo`, ["bar"]];
|
||||
|
||||
// Simple comment
|
||||
|
||||
/**
|
||||
* #########
|
||||
* Multiline
|
||||
* comment
|
||||
* #########
|
||||
*/
|
||||
|
||||
let test;
|
||||
for (let i = 0; i < constNumber; i++) {
|
||||
if (test) continue;
|
||||
else test += 1; // random things
|
||||
}
|
||||
|
||||
while(test < 100 && typeof test === "number") {
|
||||
test = test > 30 ? test+5 : test+1;
|
||||
}
|
||||
|
||||
function weatherSays(when=Date.now()) {
|
||||
return "rain";
|
||||
}
|
||||
|
||||
const thereAreClouds = true;
|
||||
const cloudsCount = 20;
|
||||
|
||||
switch(weatherSays(Date.now())) {
|
||||
case 'rain':
|
||||
break;
|
||||
case 'sun':
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
let rain = false;
|
||||
if ((thereAreClouds && cloudsCount >= 20) || weatherSays() === "rain") {
|
||||
rain = false;
|
||||
} else if (thereAreClouds && weatherSays() == "rain") { // oh no, unsafe two equals checking!
|
||||
rain = true;
|
||||
} else {
|
||||
rain = !!cloudsCount;
|
||||
}
|
||||
|
||||
class Forecast {
|
||||
constructor(where, isGonnaRainA=true, isGonnaRainB=false, isGonnaRainC=false, ...randomArgs) {
|
||||
this.station = {
|
||||
location: [where.x, where.y, where.z],
|
||||
surroundings: {
|
||||
zoneA: {
|
||||
location: [1, 2, 3],
|
||||
isGonnaRain: isGonnaRainA
|
||||
},
|
||||
zoneB: {
|
||||
location: [-1, 2, 2],
|
||||
isGonnaRain: isGonnaRainB
|
||||
},
|
||||
zoneC: {
|
||||
location: [-2, 0, 0],
|
||||
isGonnaRainC: isGonnaRainC
|
||||
},
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
async getLocalPrevisions() {
|
||||
const rainZones = [this.station.surroundings.zoneA.isGonnaRain, this.station.surroundings.zoneB.isGonnaRain, this.station.surroundings.zoneC.isGonnaRain];
|
||||
return await rainZones.filter(z => !!z).length > (rainZones.length / 2);
|
||||
}
|
||||
|
||||
communicatePrevisions(isGonnaRain=undefined) {
|
||||
if (isGonnaRain) console.log("Take the umbrella.");
|
||||
}
|
||||
|
||||
destroy() {
|
||||
delete this.station;
|
||||
}
|
||||
|
||||
static startHiring() {
|
||||
console.log("We're looking for weather presenters.");
|
||||
console.log("A lot of presenters came. Hiring stops.");
|
||||
}
|
||||
|
||||
/* This forecasting station is magic. It can generate rain, but this method is secret because it's a generator function - nobody uses them! */
|
||||
* generateRainInZoneC(clouds=[1, 2, 3]) {
|
||||
this.station.surroundings.zoneC.isGonnaRain = true;
|
||||
const makeRain = () => { return "raining!"; };
|
||||
|
||||
yield clouds; // first, keeps clouds
|
||||
do {
|
||||
console.log(makeRain());
|
||||
yield clouds.pop(); // then all clouds do rain
|
||||
} while(clouds.length >= 1);
|
||||
}
|
||||
}
|
||||
|
||||
Forecast.startHiring();
|
||||
const forecasting = new Forecast([3, 3, 3]);
|
||||
(async() => {
|
||||
const raining = forecasting.generateRainInZoneC();
|
||||
raining.next();
|
||||
forecasting.communicatePrevisions(await forecasting.getLocalPrevisions());
|
||||
raining.next();
|
||||
raining.next();
|
||||
raining.return("stop!");
|
||||
forecasting.destroy();
|
||||
})();
|
Reference in New Issue
Block a user