charts.lines: fix edge cases for fix-left-chunk and fix-right-chunk

char-rename
Alexander Iljin 2017-01-22 02:34:29 +03:00 committed by John Benediktsson
parent 42e0224258
commit ce403e1f75
2 changed files with 12 additions and 4 deletions

View File

@ -79,6 +79,8 @@ IN: charts.lines.tests
-3 3 fix-left-chunk
] unit-test
! TODO: add more tests for the recently discovered bugs in fix-left-chunk and fix-right-chunk
! fix-right-chunk: y coord = top limit
{
{ { 5 3 } { 6 0 } }
@ -192,8 +194,8 @@ IN: charts.lines.tests
! single-element sequences, same x coord
{
{
{ { 0 0 } }
{ { 0 3 } }
{ { 0 0 } { 0 3 } }
{ { 0 3 } { 0 0 } }
}
} [
{ { 0 -2 } { 0 0 } { 0 5 } { 0 3 } { 0 -1 } } { 0 3 }

View File

@ -127,7 +127,10 @@ ALIAS: y second
:: fix-left-chunk ( left right ymin ymax -- left' )
left last :> left-point
right first :> right-point
left-point y { [ ymin = ] [ ymax = ] } 1|| [
left-point y right-point y {
[ { [ drop ymin = ] [ > ] } 2&& ]
[ { [ drop ymax = ] [ < ] } 2&& ]
} 2|| [
left
] [
left-point y right-point y > ymin ymax ? :> y-coord
@ -143,7 +146,10 @@ ALIAS: y second
:: fix-right-chunk ( left right ymin ymax -- right' )
left last :> left-point
right first :> right-point
right-point y { [ ymin = ] [ ymax = ] } 1|| [
left-point y right-point y {
[ { [ ymin = nip ] [ < ] } 2&& ]
[ { [ ymax = nip ] [ > ] } 2&& ]
} 2|| [
right
] [
left-point y right-point y < ymin ymax ? :> y-coord