]> gitweb.factorcode.org Git - factor.git/commitdiff
charts.lines: fix edge cases for fix-left-chunk and fix-right-chunk
authorAlexander Iljin <ajsoft@yandex.ru>
Sat, 21 Jan 2017 23:34:29 +0000 (02:34 +0300)
committerJohn Benediktsson <mrjbq7@gmail.com>
Mon, 17 Apr 2017 20:54:51 +0000 (13:54 -0700)
lines/lines-tests.factor
lines/lines.factor

index 670322e82fac64b992dc62b5c9cbfa258097628b..b8214f45ed6ee6edd4287776e6650773cf18cccd 100644 (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 }
index 9edb0029b6b9af8c6732fe9da7c0d58d55039208..644f5fe22fc57ae58711e89e496e52d6d8bcecdf 100644 (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