Regression-tested behaviour

These regression cases are used to check that important parsing, time-handling, data-quality, calculation and scenario behaviours remain stable as the application changes. They are this project's own automated tests. They are not an independent validation, an external audit, a certification or any form of regulatory, engineering or meter approval.

Read how the calculations and data-handling rules work.

Input formats

Automated regression coverage for reading and interpreting meter files.

Condition tested
European-style CSV files
Verified behaviour
Semicolon delimiters, decimal commas, separate date and time columns and day-first dates are detected and interpreted as the source data specifies.
Condition tested
Timestamp column layouts
Verified behaviour
A single combined timestamp column and separate date and time columns both resolve to the same local interval timestamps.
Condition tested
Excel date systems
Verified behaviour
Workbooks using the 1900 and the 1904 date system decode to the same instants, and the fictional 1900-02-29 serial is rejected rather than turned into a date.
Condition tested
kW and kWh source data
Verified behaviour
Equivalent kW and kWh source data produces the same analysis across the supported reading intervals covered by the conversion tests.
Condition tested
End-stamped intervals
Verified behaviour
A timestamp marking the end of its interval is normalized back to the interval it describes using the effective interval duration.

Time handling

Automated regression coverage for timezones and daylight saving clock changes.

Condition tested
Meter timezone selection
Verified behaviour
Offset-free local timestamps are interpreted in the selected meter timezone; results do not change because the computer running the browser is in another timezone.
Condition tested
Spring-forward clock change
Verified behaviour
Local timestamps that do not exist during the clock change are excluded and reported rather than shifted into another hour.
Condition tested
Fall-back complete double pass
Verified behaviour
A complete, evenly spaced double pass through the repeated hour is resolved into two distinct real instants when the cadence-consistent assignment is unique.
Condition tested
Other fall-back patterns
Verified behaviour
Analysis stops and asks for a decision rather than guessing an ambiguous local time.
Condition tested
Decisions on ambiguous readings
Verified behaviour
Keeping the first pass, keeping the second pass and excluding the ambiguous readings are each covered by regression tests.

Data quality

Automated regression coverage for how imperfect data is reported and handled.

Condition tested
Missing intervals
Verified behaviour
Reported as missing; nothing is interpolated or filled.
Condition tested
Duplicate readings
Verified behaviour
Identical duplicate readings are removed and reported. Conflicting duplicates block analysis rather than forcing a choice between values.
Condition tested
Unreadable timestamps or values
Verified behaviour
A small number of unreadable timestamps or values can be excluded and reported while the remaining usable rows are analyzed.
Condition tested
Incomplete timestamps
Verified behaviour
Date-only or time-only values are treated as incomplete rather than being given an assumed date or time; using such a column as a complete timestamp blocks analysis.
Condition tested
Negative readings
Verified behaviour
Negative readings are retained, flagged and included in calculations rather than silently discarded.

Analysis and charts

Automated regression coverage for cadence handling, summary figures and chart data.

Condition tested
Reading-interval detection
Verified behaviour
5, 10, 15, 30 and 60-minute cadences are detected where possible and become the active default; a manual choice can override detection.
Condition tested
Gaps versus cadence changes
Verified behaviour
An isolated gap remains missing data; a sustained cadence change is treated as a different regime and blocks whole-file analysis.
Condition tested
Per-segment mixed-cadence analysis
Verified behaviour
A detected segment is analyzed with its own cadence, and every boundary reading belongs to exactly one regime according to start or end timestamp semantics.
Condition tested
Summary calculations
Verified behaviour
Conversion between kW and kWh, total energy, covered hours, average demand, maximum interval demand and load factor are checked against worked examples and equivalent source representations.
Condition tested
Percentiles
Verified behaviour
The 95th and 99th percentile convention is deterministic and produces the same result regardless of source-row order.
Condition tested
Load duration curve
Verified behaviour
The curve remains ordered from highest to lowest demand.
Condition tested
Monthly and time-of-day views
Verified behaviour
Monthly maxima and weekday and time-of-day values match the underlying intervals, and slots without observations remain marked as no data.
Condition tested
Profile rendering with missing data
Verified behaviour
The chronological profile breaks across genuine missing intervals rather than drawing through them, and those gaps remain present after chart simplification.
Condition tested
Single-interval input
Verified behaviour
A single valid interval still produces finite figures and readable charts.

Scenarios

Automated regression coverage for the additional-load and peak-limit what-if calculations.

Condition tested
Additional load over complete and partial intervals
Verified behaviour
A constant added load produces the expected energy, with partial interval overlap applied proportionally to the real overlap time.
Condition tested
Overnight windows
Verified behaviour
Schedules that cross midnight remain one continuous local-time window.
Condition tested
Schedules across a clock change
Verified behaviour
Elapsed time follows real clock time through daylight saving changes, so a nominal eight-hour local window may contain seven or nine real hours.
Condition tested
Intervals without meter data
Verified behaviour
Only observed meter intervals are changed; missing observations are never created to complete a scenario.
Condition tested
Schedule coverage
Verified behaviour
Requested schedule hours, hours with meter observations and the resulting coverage are calculated for both complete and incomplete coverage.
Condition tested
Invalid scenario inputs
Verified behaviour
Negative added load, an equal start and end time and a negative peak limit are rejected.
Condition tested
Scenario immutability
Verified behaviour
The underlying measured profile is not modified; removing the scenario returns the original results.
Condition tested
Peak-limit analysis
Verified behaviour
Intervals above the limit, the largest overshoot, the energy above the limit, affected days and runs of consecutive exceeding intervals are reported. Nothing is shifted or reduced.
Condition tested
Peak limit with an active scenario
Verified behaviour
Peak-limit analysis uses the active additional-load scenario while it is applied and returns to the original profile when the scenario is removed.

Additional browser checks

The checks below were carried out manually in a browser and are not part of the automated regression suite.

Header-only file with no data rows
A file containing column headers but no data rows was checked to ensure analysis stops cleanly rather than producing empty or misleading results.
Clock-change day with explicit UTC offsets
A complete clock-change day supplied with explicit UTC offsets was manually checked to preserve the distinct real instants and the expected scenario duration and coverage behaviour.

Scope

Regression testing includes a 100,000-row, 5-minute UTC dataset, checked for correct figures and no data-quality issues. It is not a speed measurement — actual browser speed depends on your device.

These cases verify specific behaviours that are important to electricity interval-data analysis. They are not a claim that every meter format or edge case has been tested.

Read how the calculations and data-handling rules work.