@@ -242,3 +242,54 @@ test('realisedSeries: CALLED event contributes premium AND capital gain at expir
242242 assert . strictEqual ( last . date , '2026-02-15' ) ;
243243 assert . strictEqual ( last . val , 550 ) ;
244244} ) ;
245+
246+ // buildDisplaySeries tests
247+ const { buildDisplaySeries } = require ( '../../src/js/05b-pnl.js' ) ;
248+
249+ test ( 'buildDisplaySeries: empty input returns empty' , ( ) => {
250+ assert . deepStrictEqual ( buildDisplaySeries ( [ ] , 'ALL' , '2026-05-16' ) , [ ] ) ;
251+ } ) ;
252+
253+ test ( "buildDisplaySeries: ALL prepends zero-baseline and appends today" , ( ) => {
254+ const series = [
255+ { date : '2026-01-15' , val : 100 } ,
256+ { date : '2026-03-01' , val : 250 } ,
257+ ] ;
258+ const result = buildDisplaySeries ( series , 'ALL' , '2026-05-16' ) ;
259+ assert . deepStrictEqual ( result , [
260+ { date : '2026-01-15' , val : 0 } ,
261+ { date : '2026-01-15' , val : 100 } ,
262+ { date : '2026-03-01' , val : 250 } ,
263+ { date : '2026-05-16' , val : 250 } ,
264+ ] ) ;
265+ } ) ;
266+
267+ test ( "buildDisplaySeries: 1M with no in-range points returns flat [{cutoff,lastVal},{today,lastVal}]" , ( ) => {
268+ // All trades before the 30-day window
269+ const series = [ { date : '2026-01-15' , val : 100 } ] ;
270+ // today=2026-05-16 → cutoff=2026-04-16; series point is before cutoff
271+ const result = buildDisplaySeries ( series , '1M' , '2026-05-16' ) ;
272+ assert . strictEqual ( result . length , 2 ) ;
273+ assert . strictEqual ( result [ 0 ] . date , '2026-04-16' ) ;
274+ assert . strictEqual ( result [ 0 ] . val , 100 ) ;
275+ assert . strictEqual ( result [ 1 ] . date , '2026-05-16' ) ;
276+ assert . strictEqual ( result [ 1 ] . val , 100 ) ;
277+ } ) ;
278+
279+ test ( "buildDisplaySeries: baseline carry-forward is last point before the cutoff" , ( ) => {
280+ // today=2026-05-16 → 1M cutoff=2026-04-16
281+ // Two points before cutoff; baseline should be 250 (the later one)
282+ // One point after cutoff at 300
283+ const series = [
284+ { date : '2026-01-15' , val : 100 } ,
285+ { date : '2026-03-01' , val : 250 } ,
286+ { date : '2026-04-20' , val : 300 } ,
287+ ] ;
288+ const result = buildDisplaySeries ( series , '1M' , '2026-05-16' ) ;
289+ // dispSeries: [{cutoff, 250}, {2026-04-20, 300}], then today appended
290+ assert . deepStrictEqual ( result , [
291+ { date : '2026-04-16' , val : 250 } ,
292+ { date : '2026-04-20' , val : 300 } ,
293+ { date : '2026-05-16' , val : 300 } ,
294+ ] ) ;
295+ } ) ;
0 commit comments