Browse Source

rewrite and test for bidcap logic

main
Steven Allen 1 year ago
parent
commit
9bac34a6e7
  1. 157
      test.js

157
test.js

@ -0,0 +1,157 @@
const Presidence = Object.freeze({
General: "general",
Row: "row",
Highest: "highest",
Lowest: "lowest"
})
const AppliesTo = Object.freeze({
All: "all",
None: "none",
Capped: "capped",
Uncapped: "uncapped"
})
const Oversight = Object.freeze({
Win: "win",
Tie: "tie",
Watch: "watch",
Ignore: "ignore"
})
const Capsource = Object.freeze({
Row: "row",
General: "general"
})
function newResult(shouldApplyCap, reasonNum, trueCap, capSource, myBidNum) {
let result = {};
result.shouldApplyCap = shouldApplyCap;
result.reason = reasonNum;
result.trueCap = trueCap;
result.capSource = capSource;
result.myBid = myBidNum;
return results;
}
function getBidCapReason(generalCapIsEnabled, generalCap, capPresidence, applyPresidenceTo, oversightAction, rowCapIsEnabled, rowCap, tieBid, myBid) {
let tieBidNum = number(tieBid);
let winBidNum = number(tieBid) + 25;
let generalCapNum = number(generalCap);
let rowCapNum = number(rowCap);
let myBidNum = number(myBid);
//Build our response object
let results = newResult(false, 0, null, null, myBidNum);
//WIP - LOTS of rules here - these are just the beginning.
if(generalCapIsEnabled) {
if(capPresidence == Presidence.General) {
if(applyPresidenceTo == AppliesTo.All) {
switch(oversightAction) {
case Oversight.Win:
if(winBidNum > generalCapNum) {
results = newResult(true, 1, generalCapNum, Capsource.General, generalCapNum);
return results;
}
//winBidNum <= generalCapNum
results = newResult(false, 2, generalCapNum, Capsource.General, myBidNum);
break;
case Oversight.Tie:
if(tieBidNum > generalCapNum) {
results = newResult(true, 3, generalCapNum, Capsource.General, generalCapNum);
return results;
}
//tieBidNum <= generalCapNum
results = newResult(false, 4, generalCapNum, Capsource.General, myBidNum);
break;
case Oversight.Watch:
results = newResult(false, 5, generalCapNum, Capsource.General, myBidNum);
break;
case Oversight.Ignore:
results = newResult(false, 6, generalCapNum, Capsource.General, myBidNum);
break;
default:
//We should never get here because all oversight actions have been covered.
}
return results;
}
else if(applyPresidenceTo == AppliesTo.None){
}
else if(applyPresidenceTo == AppliesTo.Capped){
}
else if(applyPresidenceTo == AppliesTo.Uncapped){
}
return results;
}
else if(capPresidence == Presidence.Row) {
return results;
}
else if(capPresidence == Presidence.Highest){
return results;
}
else if(capPresidence == Presidence.Lowest){
return results;
}
}
//If we made it here, generalCapIsEnabled is FALSE so no conflicts should exist
//This means rowCaps are the winners if they are enabled.
if(rowCapIsEnabled) {
switch(oversightAction) {
case Oversight.Win:
if(winBidNum > rowCapNum) {
results = newResult(true, 101, rowCapNum, Capsource.Row, rowCapNum);
return results;
}
//winBidNum <= rowCapNum
results = newResult(false, 102, rowCapNum, Capsource.Row, myBidNum);
break;
case Oversight.Tie:
if(tieBidNum > rowCapNum) {
results = newResult(true, 103, rowCapNum, Capsource.Row, rowCapNum);
return results;
}
//tieBidNum <= generalCapNum
results = newResult(false, 104, rowCapNum, Capsource.Row, myBidNum);
break;
case Oversight.Watch:
results = newResult(false, 105, null, Capsource.Row, myBidNum);
break;
case Oversight.Ignore:
results = newResult(false, 106, null, Capsource.Row, myBidNum);
break;
default:
//We should never get here because all oversight actions have been covered.
}
return results;
}
//Caps are not enabled for this row.
return results;
}
const expected1 = {};
const ShouldApplyCap = true;
const GeneralCapIsEnabled = true;
const RowCapIsEnabled = true;
// generalCapIsEnabled , generalCap , capPresidence , applyPresidenceTo , oversightAction , rowCapIsEnabled , rowCap , tieBid , myBid
const results1 = getBidCapReason( GeneralCapIsEnabled , 300 , Presidence.General , AppliesTo.All , Oversight.Win , !RowCapIsEnabled , null , 500 , 300 );
const results2 = getBidCapReason( GeneralCapIsEnabled , 300 , Presidence.General , AppliesTo.All , Oversight.Win , RowCapIsEnabled , 450 , 500 , 300 );
const results3 = getBidCapReason( GeneralCapIsEnabled , 300 , Presidence.General , AppliesTo.All , Oversight.Tie , !RowCapIsEnabled , null , 500 , 300 );
console.log(results1.shouldApplyCap = true && results1.reason == 1 && results1.trueCap == 200 && results1.capSource == Capsource.General && mybid == 300);
Loading…
Cancel
Save