Added a JavaScript test file

This commit is contained in:
DanielVip3 2020-10-05 15:08:15 +02:00 committed by David Peter
parent 6d6e3900c3
commit ec842e8d51
2 changed files with 228 additions and 0 deletions

View 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();
})();

View 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();
})();