Allocation

by cjwprostar

HTML

<textarea id="t" style="width: 800px; height: 800px;"></textarea>

JavaScript

var tests = [];
tests.push({
	values: [
  	{ billableHours: .07, costHours: .07 },
  	{ billableHours: .07, costHours: .07 },
  	{ billableHours: .07, costHours: .07 },
  	{ billableHours: .07, costHours: .07 }
  ],
  expect: [
  	{ allocatedBillableHours: .01, allocatedCostHours: .01 },
  	{ allocatedBillableHours: .02, allocatedCostHours: .02 },
  	{ allocatedBillableHours: .02, allocatedCostHours: .02 },
  	{ allocatedBillableHours: .02, allocatedCostHours: .02 }
  ]
});
tests.push({
	values: [
  	{ billableHours: 1, costHours: .19 },
  	{ billableHours: 1, costHours: .19 }
  ],
  expect: [
  	{ allocatedBillableHours: .5, allocatedCostHours: .09 },
  	{ allocatedBillableHours: .5, allocatedCostHours: .1 }
  ]
});
tests.push({
	values: [
  	{ billableHours: .06, costHours: .06 },
  	{ billableHours: .06, costHours: .06 },
  	{ billableHours: .06, costHours: .06 },
  	{ billableHours: .06, costHours: .06 }
  ],
  expect: [
  	{ allocatedBillableHours: .01, allocatedCostHours: .01 },
  	{ allocatedBillableHours: .01, allocatedCostHours: .01 },
  	{ allocatedBillableHours: .02, allocatedCostHours: .02 },
  	{ allocatedBillableHours: .02, allocatedCostHours: .02 },
  ]
});
tests.push({
	values: [
  	{ billableHours: 1, costHours: 1 },
  	{ billableHours: 1, costHours: 1 },
  	{ billableHours: 1, costHours: 1 }
  ],
  expect: [
  	{ allocatedBillableHours: .33, allocatedCostHours: .33 },
  	{ allocatedBillableHours: .33, allocatedCostHours: .33 },
  	{ allocatedBillableHours: .34, allocatedCostHours: .34 },
  ]
});
tests.push({
	values: [
  	{ billableHours: 1, costHours: .78 }
  ],
  expect: [
  	{ allocatedBillableHours: 1, allocatedCostHours: .78 }
  ]
});
tests.push({
	values: [
  	{ billableHours: 1, costHours: .2 },
  	{ billableHours: 1, costHours: .2 }
  ],
  expect: [
  	{ allocatedBillableHours: .5, allocatedCostHours: .1 },
  	{ allocatedBillableHours: .5, allocatedCostHours: .1 }
  ]
});
tests.push({
	values: [
  	{ billableHours: 2, costHours: 1.7 },
 ...