diff --git a/test.js b/test.js index 9c07d8a..d28f9b9 100644 --- a/test.js +++ b/test.js @@ -31,16 +31,16 @@ const TestResult = Object.freeze({ }) //Declare some readability constants -const ShouldApplyCap = true; -const GeneralCapIsEnabled = true; -const RowCapIsEnabled = true; +const CapIsTriggered = true; //myBid is over the targetCap the cap is enabled in some way for the row) +const GeneralCapIsEnabled = true; //The generalCap checkbox is checked +const RowCapIsEnabled = true; //The rowCap checkBox is checked for the county -function newResult(shouldApplyCap, reasonNum, trueCap, capSource, myBidNum) { +function newResult(capIsTriggered, reasonNum, trueCapNum, capSource, myBidNum) { let result = {}; - result.shouldApplyCap = shouldApplyCap; + result.capIsTriggered = capIsTriggered; result.reason = reasonNum; - result.trueCap = trueCap; + result.trueCap = trueCapNum; result.capSource = capSource; result.myBid = myBidNum; return result; @@ -75,7 +75,7 @@ function executeTests(scenarios, expectations, verboseLevel) { const scenariosCount = scenarios.length; console.log("VerboseLevel: "+ verboseLevel); console.log("Generating Scenarios... \t[generalCapIsEnabled, generalCap, capPresidence, applyPresidenceTo, oversightAction, rowCapIsEnabled, rowCap, tieBid, myBid]"); - console.log("Generating ExpectedValues...\t[shouldApplyCap, reason, trueCap, capSource, myBid]"); + console.log("Generating ExpectedValues...\t[capIsTriggered, reason, trueCap, capSource, myBid]"); if(verboseLevel >= 2) { console.log("Test \tScenarioValues -> ExpectedValues"); } console.log("--------------------------------------------------------"); let scenarioReasons = []; @@ -91,7 +91,7 @@ function executeTests(scenarios, expectations, verboseLevel) { console.log(""); console.log("Running tests on each scenario..."); if(verboseLevel >= 1){ - console.log("Test\tOutome\t||apply\t|reason\t|truCap\t|capSrc\t|myBid\t|| ScenarioValues -> ExpectedValues"); + console.log("Test\tOutome\t||trgrd\t|reason\t|truCap\t|capSrc\t|myBid\t|| ScenarioValues -> ExpectedValues"); } else { console.log("Test\tOutome\t|| ScenarioValues -> ExpectedValues"); } @@ -101,7 +101,7 @@ function executeTests(scenarios, expectations, verboseLevel) { for(let i = 0; i < reasonsCount; i++ ){ //console.log(JSON.stringify(scenarioReasons[i])); let assertions = [ - (scenarioReasons[i].shouldApplyCap == expectations[i][0]), + (scenarioReasons[i].capIsTriggered == expectations[i][0]), (scenarioReasons[i].reason == expectations[i][1]), (scenarioReasons[i].trueCap == expectations[i][2]), (scenarioReasons[i].capSource == expectations[i][3]), @@ -117,7 +117,7 @@ function executeTests(scenarios, expectations, verboseLevel) { if(verboseLevel >= 2) { const ePad =" \t |"; - const TestResult_ShouldApplyCap = (assertions[0] == true)? TestResult.Pass : TestResult.Fail; + const TestResult_CapIsTriggered = (assertions[0] == true)? TestResult.Pass : TestResult.Fail; const TestResult_Reason = (assertions[1] == true)? TestResult.Pass : TestResult.Fail; const TestResult_TrueCap = (assertions[2] == true)? TestResult.Pass : TestResult.Fail; const TestResult_CapSource = (assertions[3] == true)? TestResult.Pass : TestResult.Fail; @@ -125,7 +125,7 @@ function executeTests(scenarios, expectations, verboseLevel) { console.log(" +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); console.log(ePad +" ITEM RESULT \t| ACTUAL \t| EXPECTED"); console.log(" +---------------------------------------------------"); - console.log(ePad +"shouldApplyCap: "+ TestResult_ShouldApplyCap +" \t| "+ scenarioReasons[i].shouldApplyCap +" \t| "+ expectations[i][0]); + console.log(ePad +"capIsTriggered: "+ TestResult_CapIsTriggered +" \t| "+ scenarioReasons[i].capIsTriggered +" \t| "+ expectations[i][0]); console.log(ePad +"reason: "+ TestResult_Reason +"\t| "+ scenarioReasons[i].reason +" \t| "+ expectations[i][1]); console.log(ePad +"trueCap: "+ TestResult_TrueCap +"\t| "+ scenarioReasons[i].trueCap +" \t| "+ expectations[i][2]); console.log(ePad +"capSource: "+ TestResult_CapSource+"\t| "+ scenarioReasons[i].capSource +"\t| "+ expectations[i][3]); @@ -160,15 +160,15 @@ function getTest(testId) { } //The function from our main codebase -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); +function getBidCapReason(generalCapIsEnabled, pGeneralCap, capPresidence, applyPresidenceTo, oversightAction, rowCapIsEnabled, pRowCap, pTieBid, pMyBid) { + let tieBid = Number(pTieBid); + let winBid = Number(pTieBid) + 25; + let generalCap = Number(pGeneralCap); + let rowCap = Number(pRowCap); + let myBid = Number(pMyBid); //Build our response object - let results = newResult(false, 0, null, null, myBidNum); + let results = newResult(false, 0, null, null, myBid); //WIP - LOTS of rules here - these are just the beginning. if(generalCapIsEnabled) { @@ -177,29 +177,29 @@ function getBidCapReason(generalCapIsEnabled, generalCap, capPresidence, applyPr switch(oversightAction) { case Oversight.Win: - if(winBidNum > generalCapNum) { - results = newResult(true, 1, generalCapNum, Capsource.General, generalCapNum); + if(winBid > generalCap) { + results = newResult(true, 1, generalCap, Capsource.General, generalCap); return results; } - //winBidNum <= generalCapNum - results = newResult(false, 2, generalCapNum, Capsource.General, myBidNum); + //winBid <= generalCap + results = newResult(false, 2, generalCap, Capsource.General, myBid); break; case Oversight.Tie: - if(tieBidNum > generalCapNum) { - results = newResult(true, 3, generalCapNum, Capsource.General, generalCapNum); + if(tieBid > generalCap) { + results = newResult(true, 3, generalCap, Capsource.General, generalCap); return results; } - //tieBidNum <= generalCapNum - results = newResult(false, 4, generalCapNum, Capsource.General, myBidNum); + //tieBid <= generalCap + results = newResult(false, 4, generalCap, Capsource.General, myBid); break; case Oversight.Watch: - results = newResult(false, 5, generalCapNum, Capsource.General, myBidNum); + results = newResult(false, 5, generalCap, Capsource.General, myBid); break; case Oversight.Ignore: - results = newResult(false, 6, generalCapNum, Capsource.General, myBidNum); + results = newResult(false, 6, generalCap, Capsource.General, myBid); break; default: @@ -234,29 +234,29 @@ function getBidCapReason(generalCapIsEnabled, generalCap, capPresidence, applyPr if(rowCapIsEnabled) { switch(oversightAction) { case Oversight.Win: - if(winBidNum > rowCapNum) { - results = newResult(true, 101, rowCapNum, Capsource.Row, rowCapNum); + if(winBid > rowCap) { + results = newResult(true, 101, rowCap, Capsource.Row, rowCap); return results; } - //winBidNum <= rowCapNum - results = newResult(false, 102, rowCapNum, Capsource.Row, myBidNum); + //winBid <= rowCap + results = newResult(false, 102, rowCap, Capsource.Row, myBid); break; case Oversight.Tie: - if(tieBidNum > rowCapNum) { - results = newResult(true, 103, rowCapNum, Capsource.Row, rowCapNum); + if(tieBid > rowCap) { + results = newResult(true, 103, rowCap, Capsource.Row, rowCap); return results; } - //tieBidNum <= generalCapNum - results = newResult(false, 104, rowCapNum, Capsource.Row, myBidNum); + //tieBid <= generalCap + results = newResult(false, 104, rowCap, Capsource.Row, myBid); break; case Oversight.Watch: - results = newResult(false, 105, null, Capsource.Row, myBidNum); + results = newResult(false, 105, null, Capsource.Row, myBid); break; case Oversight.Ignore: - results = newResult(false, 106, null, Capsource.Row, myBidNum); + results = newResult(false, 106, null, Capsource.Row, myBid); break; default: //We should never get here because all oversight actions have been covered. @@ -271,20 +271,40 @@ function getBidCapReason(generalCapIsEnabled, generalCap, capPresidence, applyPr //All the scenarios we could run into function getUseCases(){ let useCases = []; //[generalCapIsEnabled, generalCap, capPresidence, applyPresidenceTo, oversightAction, rowCapIsEnabled, rowCap, tieBid, myBid]; - useCases[0] = [GeneralCapIsEnabled, 300, Presidence.General, AppliesTo.All, Oversight.Win, !RowCapIsEnabled, null, 500, 350]; - useCases[1] = [GeneralCapIsEnabled, 300, Presidence.General, AppliesTo.All, Oversight.Win, RowCapIsEnabled, 450 , 500, 350]; - useCases[2] = [GeneralCapIsEnabled, 300, Presidence.General, AppliesTo.All, Oversight.Tie, !RowCapIsEnabled, null, 500, 350]; - useCases[3] = [GeneralCapIsEnabled, 300, Presidence.General, AppliesTo.All, Oversight.Tie, RowCapIsEnabled, 450 , 500, 350]; + + // [generalCapIsEnabled, gCap, capPresidence , applyTo , rowAction , rowCapIsEnabled, rCap, tie, myBid]; //win + //winBid > generalCap > rowCap > myBid + useCases[0] = [GeneralCapIsEnabled, 350, Presidence.General, AppliesTo.All, Oversight.Win, !RowCapIsEnabled, null, 550, 225]; //575 + useCases[1] = [GeneralCapIsEnabled, 350, Presidence.General, AppliesTo.All, Oversight.Win, RowCapIsEnabled, 450 , 550, 225]; //575 + //winBid = generalCap > rowCap > myBid + useCases[2] = [GeneralCapIsEnabled, 350, Presidence.General, AppliesTo.All, Oversight.Win, !RowCapIsEnabled, null, 275, 225]; //300 + useCases[3] = [GeneralCapIsEnabled, 350, Presidence.General, AppliesTo.All, Oversight.Win, RowCapIsEnabled, 450 , 275, 225]; //300 + //winBid < generalCap > rowCap > myBid + useCases[4] = [GeneralCapIsEnabled, 350, Presidence.General, AppliesTo.All, Oversight.Win, !RowCapIsEnabled, null, 250, 225]; //275 + useCases[5] = [GeneralCapIsEnabled, 350, Presidence.General, AppliesTo.All, Oversight.Win, RowCapIsEnabled, 450 , 250, 225]; //275 + + //useCases[2] = [GeneralCapIsEnabled, 300, Presidence.General, AppliesTo.All, Oversight.Tie, !RowCapIsEnabled, null, 500, 350]; + //useCases[3] = [GeneralCapIsEnabled, 300, Presidence.General, AppliesTo.All, Oversight.Tie, RowCapIsEnabled, 450 , 500, 350]; return useCases; } //And what we expect from each scenario function getExpectedOutcomes(){ - let expectedOutcomes = []; //[shouldApplyCap, reason, trueCap, capSource, myBid]); - expectedOutcomes[0] = [GeneralCapIsEnabled, 1, 300, Capsource.General, 300]; - expectedOutcomes[1] = [GeneralCapIsEnabled, 1, 300, Capsource.General, 300]; - expectedOutcomes[2] = [GeneralCapIsEnabled, 3, 300, Capsource.General, 300]; - expectedOutcomes[3] = [GeneralCapIsEnabled, 4, 300, Capsource.General, 300]; + let expectedOutcomes = [];//[capIsTriggered, reason, trueCap, capSource, myBid]); + + // [ capIsTriggered, r,trueCap, capSource, myBid] //wBid,(gC||rC ) -> tCap? myBid + //winBid > generalCap > rowCap > myBid + expectedOutcomes[0] = [!CapIsTriggered, 1, 350, Capsource.General, 225]; //575,(350||null) -> 350 ? 225 + expectedOutcomes[1] = [!CapIsTriggered, 1, 350, Capsource.General, 225]; //575,(350||450) -> 350 ? 225 + //winBid = generalCap > rowCap > myBid + expectedOutcomes[2] = [!CapIsTriggered, 0, 350, Capsource.General, 225]; //300,(350||null) -> 350 ? 225 + expectedOutcomes[3] = [!CapIsTriggered, 0, 350, Capsource.General, 225]; //300,(350||450) -> 350 ? 225 + //winBid < generalCap > rowCap > myBid + expectedOutcomes[4] = [!CapIsTriggered, 0, 350, Capsource.General, 225]; //275,(350||null) -> 350 ? 225 + expectedOutcomes[5] = [!CapIsTriggered, 0, 350, Capsource.General, 225]; //275,(350||450) -> 350 ? 225 + + //expectedOutcomes[2] = [CapIsTriggered, 3, 300, Capsource.General, 300]; + //expectedOutcomes[3] = [CapIsTriggered, 4, 300, Capsource.General, 300]; return expectedOutcomes; }