Functional Weave
Code in Rust

agri.gross-margin@1.0.0

vectors.json

11,004 bytes · view raw

[
  {
    "name": "100 ha of winter wheat: grain and straw less seed, fertiliser, sprays and sundries",
    "args": [
      [
        {
          "name": "grain",
          "amount": {
            "minor": 23000000,
            "currency": "GBP"
          }
        },
        {
          "name": "straw",
          "amount": {
            "minor": 800000,
            "currency": "GBP"
          }
        }
      ],
      [
        {
          "name": "seed",
          "amount": {
            "minor": 750000,
            "currency": "GBP"
          }
        },
        {
          "name": "fertiliser",
          "amount": {
            "minor": 2200000,
            "currency": "GBP"
          }
        },
        {
          "name": "sprays",
          "amount": {
            "minor": 1800000,
            "currency": "GBP"
          }
        },
        {
          "name": "other",
          "amount": {
            "minor": 450000,
            "currency": "GBP"
          }
        }
      ],
      "hectare",
      100,
      "GBP"
    ],
    "expect": {
      "output": {
        "minor": 23800000,
        "currency": "GBP"
      },
      "variableCosts": {
        "minor": 5200000,
        "currency": "GBP"
      },
      "grossMargin": {
        "minor": 18600000,
        "currency": "GBP"
      },
      "outputPerUnit": {
        "minor": 238000,
        "currency": "GBP"
      },
      "variableCostsPerUnit": {
        "minor": 52000,
        "currency": "GBP"
      },
      "grossMarginPerUnit": {
        "minor": 186000,
        "currency": "GBP"
      },
      "marginBasisPoints": 7815
    }
  },
  {
    "name": "a 500-ewe flock per ewe",
    "args": [
      [
        {
          "name": "lamb sales",
          "amount": {
            "minor": 5000000,
            "currency": "GBP"
          }
        },
        {
          "name": "wool",
          "amount": {
            "minor": 50000,
            "currency": "GBP"
          }
        }
      ],
      [
        {
          "name": "feed",
          "amount": {
            "minor": 1200000,
            "currency": "GBP"
          }
        },
        {
          "name": "vet and med",
          "amount": {
            "minor": 250000,
            "currency": "GBP"
          }
        },
        {
          "name": "other",
          "amount": {
            "minor": 300000,
            "currency": "GBP"
          }
        }
      ],
      "head",
      500,
      "GBP"
    ],
    "expect": {
      "output": {
        "minor": 5050000,
        "currency": "GBP"
      },
      "variableCosts": {
        "minor": 1750000,
        "currency": "GBP"
      },
      "grossMargin": {
        "minor": 3300000,
        "currency": "GBP"
      },
      "outputPerUnit": {
        "minor": 10100,
        "currency": "GBP"
      },
      "variableCostsPerUnit": {
        "minor": 3500,
        "currency": "GBP"
      },
      "grossMarginPerUnit": {
        "minor": 6600,
        "currency": "GBP"
      },
      "marginBasisPoints": 6535
    }
  },
  {
    "name": "the margin per head is the margin divided once (1667), not output per head less costs per head (1666)",
    "args": [
      [
        {
          "name": "sales",
          "amount": {
            "minor": 10000,
            "currency": "GBP"
          }
        }
      ],
      [
        {
          "name": "feed",
          "amount": {
            "minor": 5000,
            "currency": "GBP"
          }
        }
      ],
      "head",
      3,
      "GBP"
    ],
    "expect": {
      "output": {
        "minor": 10000,
        "currency": "GBP"
      },
      "variableCosts": {
        "minor": 5000,
        "currency": "GBP"
      },
      "grossMargin": {
        "minor": 5000,
        "currency": "GBP"
      },
      "outputPerUnit": {
        "minor": 3333,
        "currency": "GBP"
      },
      "variableCostsPerUnit": {
        "minor": 1667,
        "currency": "GBP"
      },
      "grossMarginPerUnit": {
        "minor": 1667,
        "currency": "GBP"
      },
      "marginBasisPoints": 5000
    }
  },
  {
    "name": "a loss-making enterprise has a negative margin",
    "args": [
      [
        {
          "name": "sales",
          "amount": {
            "minor": 100000,
            "currency": "GBP"
          }
        }
      ],
      [
        {
          "name": "costs",
          "amount": {
            "minor": 150000,
            "currency": "GBP"
          }
        }
      ],
      "hectare",
      10,
      "GBP"
    ],
    "expect": {
      "output": {
        "minor": 100000,
        "currency": "GBP"
      },
      "variableCosts": {
        "minor": 150000,
        "currency": "GBP"
      },
      "grossMargin": {
        "minor": -50000,
        "currency": "GBP"
      },
      "outputPerUnit": {
        "minor": 10000,
        "currency": "GBP"
      },
      "variableCostsPerUnit": {
        "minor": 15000,
        "currency": "GBP"
      },
      "grossMarginPerUnit": {
        "minor": -5000,
        "currency": "GBP"
      },
      "marginBasisPoints": -5000
    }
  },
  {
    "name": "no output: margin share is null and a negative half penny rounds away from zero",
    "args": [
      [],
      [
        {
          "name": "seed",
          "amount": {
            "minor": 5,
            "currency": "GBP"
          }
        }
      ],
      "hectare",
      2,
      "GBP"
    ],
    "expect": {
      "output": {
        "minor": 0,
        "currency": "GBP"
      },
      "variableCosts": {
        "minor": 5,
        "currency": "GBP"
      },
      "grossMargin": {
        "minor": -5,
        "currency": "GBP"
      },
      "outputPerUnit": {
        "minor": 0,
        "currency": "GBP"
      },
      "variableCostsPerUnit": {
        "minor": 3,
        "currency": "GBP"
      },
      "grossMarginPerUnit": {
        "minor": -3,
        "currency": "GBP"
      },
      "marginBasisPoints": null
    }
  },
  {
    "name": "a part hectare area",
    "args": [
      [
        {
          "name": "potatoes",
          "amount": {
            "minor": 1250000,
            "currency": "GBP"
          }
        }
      ],
      [
        {
          "name": "seed",
          "amount": {
            "minor": 250000,
            "currency": "GBP"
          }
        }
      ],
      "hectare",
      12.5,
      "GBP"
    ],
    "expect": {
      "output": {
        "minor": 1250000,
        "currency": "GBP"
      },
      "variableCosts": {
        "minor": 250000,
        "currency": "GBP"
      },
      "grossMargin": {
        "minor": 1000000,
        "currency": "GBP"
      },
      "outputPerUnit": {
        "minor": 100000,
        "currency": "GBP"
      },
      "variableCostsPerUnit": {
        "minor": 20000,
        "currency": "GBP"
      },
      "grossMarginPerUnit": {
        "minor": 80000,
        "currency": "GBP"
      },
      "marginBasisPoints": 8000
    }
  },
  {
    "name": "a negative output line (a clawback) reduces output",
    "args": [
      [
        {
          "name": "milk",
          "amount": {
            "minor": 2000000,
            "currency": "GBP"
          }
        },
        {
          "name": "quota clawback",
          "amount": {
            "minor": -100000,
            "currency": "GBP"
          }
        }
      ],
      [
        {
          "name": "feed",
          "amount": {
            "minor": 900000,
            "currency": "GBP"
          }
        }
      ],
      "head",
      10,
      "GBP"
    ],
    "expect": {
      "output": {
        "minor": 1900000,
        "currency": "GBP"
      },
      "variableCosts": {
        "minor": 900000,
        "currency": "GBP"
      },
      "grossMargin": {
        "minor": 1000000,
        "currency": "GBP"
      },
      "outputPerUnit": {
        "minor": 190000,
        "currency": "GBP"
      },
      "variableCostsPerUnit": {
        "minor": 90000,
        "currency": "GBP"
      },
      "grossMarginPerUnit": {
        "minor": 100000,
        "currency": "GBP"
      },
      "marginBasisPoints": 5263
    }
  },
  {
    "name": "no lines at all is zero everywhere",
    "args": [
      [],
      [],
      "head",
      1,
      "EUR"
    ],
    "expect": {
      "output": {
        "minor": 0,
        "currency": "EUR"
      },
      "variableCosts": {
        "minor": 0,
        "currency": "EUR"
      },
      "grossMargin": {
        "minor": 0,
        "currency": "EUR"
      },
      "outputPerUnit": {
        "minor": 0,
        "currency": "EUR"
      },
      "variableCostsPerUnit": {
        "minor": 0,
        "currency": "EUR"
      },
      "grossMarginPerUnit": {
        "minor": 0,
        "currency": "EUR"
      },
      "marginBasisPoints": null
    }
  },
  {
    "name": "a fractional head count is an error",
    "args": [
      [
        {
          "name": "sales",
          "amount": {
            "minor": 100,
            "currency": "GBP"
          }
        }
      ],
      [],
      "head",
      2.5,
      "GBP"
    ],
    "expectError": "units must be a whole number of head from 1 to 10000000"
  },
  {
    "name": "zero hectares is an error",
    "args": [
      [
        {
          "name": "sales",
          "amount": {
            "minor": 100,
            "currency": "GBP"
          }
        }
      ],
      [],
      "hectare",
      0,
      "GBP"
    ],
    "expectError": "units must be a finite number of hectares greater than 0"
  },
  {
    "name": "less than a square metre is an error",
    "args": [
      [
        {
          "name": "sales",
          "amount": {
            "minor": 100,
            "currency": "GBP"
          }
        }
      ],
      [],
      "hectare",
      1e-05,
      "GBP"
    ],
    "expectError": "units must be at least 0.0001 hectares"
  },
  {
    "name": "an unknown basis is an error",
    "args": [
      [
        {
          "name": "sales",
          "amount": {
            "minor": 100,
            "currency": "GBP"
          }
        }
      ],
      [],
      "acre",
      1,
      "GBP"
    ],
    "expectError": "unknown basis \"acre\""
  },
  {
    "name": "a cost in another currency is an error",
    "args": [
      [
        {
          "name": "sales",
          "amount": {
            "minor": 100,
            "currency": "GBP"
          }
        }
      ],
      [
        {
          "name": "seed",
          "amount": {
            "minor": 10,
            "currency": "EUR"
          }
        }
      ],
      "head",
      1,
      "GBP"
    ],
    "expectError": "currency mismatch"
  },
  {
    "name": "totals beyond 900 billion minor units are refused",
    "args": [
      [
        {
          "name": "sales",
          "amount": {
            "minor": 900000000001,
            "currency": "GBP"
          }
        }
      ],
      [],
      "head",
      1,
      "GBP"
    ],
    "expectError": "totals must be within 900000000000 minor units"
  }
]