The Trunk: GraphicsTests-mt.50.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: GraphicsTests-mt.50.mcz

commits-2
Marcel Taeumel uploaded a new version of GraphicsTests to project The Trunk:
http://source.squeak.org/trunk/GraphicsTests-mt.50.mcz

==================== Summary ====================

Name: GraphicsTests-mt.50
Author: mt
Time: 2 December 2018, 11:52:32.350325 am
UUID: 47215a6d-cd2c-b749-8e8b-402fef91d861
Ancestors: GraphicsTests-pre.49

Fixes categories for point tests. Adds tests for infix rectangle creation.

=============== Diff against GraphicsTests-pre.49 ===============

Item was changed:
  SystemOrganization addCategory: #'GraphicsTests-Files'!
  SystemOrganization addCategory: #'GraphicsTests-Primitives'!
- SystemOrganization addCategory: #'GraphicsTests-Transformations'!
  SystemOrganization addCategory: #'GraphicsTests-Text'!

Item was changed:
+ ----- Method: PointTest>>testBasicFourDirections (in category 'tests') -----
- ----- Method: PointTest>>testBasicFourDirections (in category 'testing - testing') -----
  testBasicFourDirections
  "fourDirections returns the four rotation of the receiver in counter clockwise order with the receiver appearing last. "
 
  | samples results rejects |
  self assert:  (0 asPoint fourDirections) = (Array new: 4 withAll: 0 asPoint) .
  samples := 0 asPoint eightNeighbors  .
  results := {
  { 0 @ -1 . -1 @  0 . 0 @  1 . 1 @  0}.
  { 1 @ -1 . -1 @ -1 . -1 @  1 . 1 @  1}.
  { 1 @  0 . 0 @ -1 . -1 @  0 . 0 @  1}.
  { 1 @  1 . 1 @ -1 . -1 @ -1 . -1 @  1}.
  { 0 @  1 . 1 @  0 . 0 @ -1 . -1 @  0}.
  {-1 @  1 . 1 @  1 . 1 @ -1 . -1 @ -1}.
  {-1 @  0 . 0 @  1 . 1 @  0 . 0 @ -1}.
  {-1 @ -1 . -1 @  1 . 1 @  1 . 1 @ -1} } .
 
  rejects := (1 to: samples size ) reject: [ :each |
  (samples at: each) fourDirections = (results at: each) ] .
 
  self assert: rejects isEmpty!

Item was changed:
+ ----- Method: PointTest>>testBearingToPoint (in category 'tests') -----
- ----- Method: PointTest>>testBearingToPoint (in category 'tests - testing') -----
  testBearingToPoint
 
  self assert: (0 @ 0 bearingToPoint: 0 @ 0) = 0.
  self assert: (0 @ 0 bearingToPoint: 0 @ -1) = 0.
  self assert: (0 @ 0 bearingToPoint: 1 @ 0) = 90.
  self assert: (0 @ 0 bearingToPoint: 0 @ 1) = 180.
  self assert: (0 @ 0 bearingToPoint: -1 @ 0) = 270.
  self assert: (0 @ 0 bearingToPoint: 1 @ 1) = 135.
  self assert: (0 @ 0 bearingToPoint: 0.01 @ 0) = 90.
  self assert: (0 @ 0 bearingToPoint: -2 @ -3) = 326.
  self assert: (0 @ 0 bearingToPoint: -0 @ 0) = 0.
 
  self assert: (-2 @ -3 bearingToPoint: 0 @ 0) = 146.!

Item was changed:
+ ----- Method: PointTest>>testFourDirectionsInvarients (in category 'tests') -----
- ----- Method: PointTest>>testFourDirectionsInvarients (in category 'testing - testing') -----
  testFourDirectionsInvarients
  " fourDirections returns the four rotation of the reciever in counter clockwise order with the reciever appearing last. "
 
  | samples  rejects |
 
  samples :=
  0 asPoint eightNeighbors  .
 
  rejects :=
  (1 to: samples size ) reject: [ :each |
  (samples at: each) fourDirections last = ( samples  at: each) ] .
 
  self assert: ( rejects isEmpty) .
 
 
  !

Item was changed:
+ ----- Method: PointTest>>testFourDirectionsRotationInvarients (in category 'tests') -----
- ----- Method: PointTest>>testFourDirectionsRotationInvarients (in category 'testing - testing') -----
  testFourDirectionsRotationInvarients
  " fourDirections returns the four rotation of the reciever in counter clockwise order with the reciever appearing last. "
 
  | samples  rejects |
 
  samples :=
  0 asPoint eightNeighbors  .
 
  rejects :=
  (1 to: samples size ) reject: [ :each | | answer  |
  (answer :=  (samples at: each) fourDirections ) .
  (1 to: 4) allSatisfy: [ :eachDirIndex |
  ( answer atWrap: eachDirIndex)  leftRotated
  = (( answer atWrap: eachDirIndex + 1) )  ] ] .
 
  self assert: ( rejects isEmpty) .
 
 
  !

Item was changed:
+ ----- Method: PointTest>>testIsZero (in category 'tests') -----
- ----- Method: PointTest>>testIsZero (in category 'tests - testing') -----
  testIsZero
 
  self assert: (0@0) isZero.
  self deny:  (0@1) isZero.
  self deny:  (1@0) isZero.
  self deny:  (1@1) isZero.!

Item was changed:
+ ----- Method: PointTest>>testNormal (in category 'tests') -----
- ----- Method: PointTest>>testNormal (in category 'testing - testing') -----
  testNormal
  "quick check of results for #normal."
  | samples rejects results |
  samples := 0 asPoint eightNeighbors , (Array with: 0 asPoint) .
 
  results :=
    { 0.0 @ 1.0 .
  -0.707106781186547 @ 0.707106781186547 .
  -1.0 @ 0.0 .
  -0.707106781186547 @ -0.707106781186547 .
  0.0 @ -1.0 .
  0.707106781186547 @ -0.707106781186547 .
  1.0 @ 0.0 .
  0.707106781186547 @ 0.707106781186547 .
  -1 @ 0} .
 
  rejects := (1 to: samples size ) reject:
  [ :each | ((samples at: each) normal - (results at: each)) abs  < 1e-15 asPoint ] .
 
  self assert: rejects isEmpty!

Item was changed:
+ ----- Method: PointTest>>testNormal2 (in category 'tests') -----
- ----- Method: PointTest>>testNormal2 (in category 'testing - testing') -----
  testNormal2
  "quick check of results for #normal.
  differs from the other testNormal in the way that the difference is measured."
 
  | samples rejects results differences |
  samples := 0 asPoint eightNeighbors , (Array with: 0 asPoint) .
 
  results :=
  { 0.0 @ 1.0 .
  -0.707106781186547 @ 0.707106781186547 .
  -1.0 @ 0.0 .
  -0.707106781186547 @ -0.707106781186547 .
  0.0 @ -1.0 .
  0.707106781186547 @ -0.707106781186547 .
  1.0 @ 0.0 .
  0.707106781186547 @ 0.707106781186547 .
  -1 @ 0} .
  differences := samples with: results collect: [ :each :eachResult |
  each normal - eachResult ] .
 
  rejects := differences reject: [ :each |
  (each x closeTo: 0.0) and: [each y closeTo: 0.0] ] .
 
  self assert: rejects isEmpty!

Item was added:
+ ----- Method: PointTest>>testRectangleMix (in category 'tests') -----
+ testRectangleMix
+
+ {
+ Rectangle center: 60@60 extent: 100@100.
+ Rectangle origin: 10@10 extent: 100@100.
+ Rectangle origin: 10@10 corner: 110@110.
+
+ 60@60 inflate: 100@100.
+ 10@10 extent: 100@100.
+ 10@10 corner: 110@110.
+ } permutationsDo: [:rects |
+ rects overlappingPairsDo: [:r1 :r2 |
+ self assert: r1 equals: r2]].!

Item was added:
+ ----- Method: PointTest>>testRectangleWithCorner (in category 'tests') -----
+ testRectangleWithCorner
+
+ self
+ assert: (Rectangle origin: 10@10 corner: 110@110)
+ equals: (10@10 corner: 110@110).!

Item was added:
+ ----- Method: PointTest>>testRectangleWithExtent (in category 'tests') -----
+ testRectangleWithExtent
+
+ self
+ assert: (Rectangle origin: 50@50 extent: 100@100)
+ equals: (50@50 extent: 100@100).!

Item was added:
+ ----- Method: PointTest>>testRectangleWithInflate (in category 'tests') -----
+ testRectangleWithInflate
+
+ self
+ assert: (Rectangle center: 50@50 extent: 100@100)
+ equals: (50@50 inflate: 100@100).!

Item was changed:
+ ----- Method: PointTest>>testRotations (in category 'tests') -----
- ----- Method: PointTest>>testRotations (in category 'testing - testing') -----
  testRotations
  " Here we are testing rightRotated and leftRotated which are new.
  Because there is really no coverage for point functions this also serves as a tests of sorts for
  rotateBy:CenterAt:"
 
  | samples |
  samples :=
  0 asPoint eightNeighbors
  , (Array with: 0 asPoint) .
 
  self assert: (samples allSatisfy: [ :each |
  each rightRotated leftRotated = each ] ) .
 
  self assert: (samples allSatisfy: [ :each |
  each rightRotated  = (each rotateBy: #right centerAt: 0 asPoint)] ) .
 
  self assert: (samples allSatisfy: [ :each |
  each leftRotated  = (each rotateBy: #left centerAt: 0 asPoint ) ] ) .
 
  self assert: (samples allSatisfy: [ :each |
  each negated  = (each rotateBy: #pi centerAt: 0 asPoint ) ] ) .
 
  self assert: (samples allSatisfy: [ :each |
  each leftRotated leftRotated leftRotated leftRotated = each ]) .
 
  self assert: (samples allSatisfy: [ :each |
  each rightRotated rightRotated rightRotated rightRotated  = each ] ) .
  !

Item was changed:
+ ----- Method: PointTest>>testSign (in category 'tests') -----
- ----- Method: PointTest>>testSign (in category 'testing - testing') -----
  testSign
  | samples results rejects |
  samples := 0 asPoint eightNeighbors , (Array with: 0 asPoint).
 
  results := samples collect: [ :each | each sign ].
 
  rejects := (1 to: samples size ) reject: [ :each |
  (samples at: each) = (results at: each) ] .
 
  self assert: (rejects isEmpty)
 
 
  !

Item was changed:
+ ----- Method: PointTest>>testTheta (in category 'tests') -----
- ----- Method: PointTest>>testTheta (in category 'testing - testing') -----
  testTheta
        | result dir tan x y |
  self assert: ((0 @ 1) theta - 90.0 degreesToRadians) abs < 1e-15.
  self assert: ((0 @ -1) theta - 270.0 degreesToRadians) abs < 1e-15.
  " See code of old and new theta"
  x := 1.0 . y := -1.0.
  tan := y  / x .
  dir := tan arcTan.
        result :=  360.0 degreesToRadians + dir.
        self assert: ((x @ y) theta - result) abs < 1e-15.
  x := -1.0. "Don't reuse old results when you want numeric precision!!"
  tan := y  / x .
  dir := tan arcTan.
        result :=  180.0 degreesToRadians + dir.
        self assert: ((x @ y) theta - result) abs < 1e-15.
 
  !

Item was changed:
+ ----- Method: PointTest>>testZeroPointNormal (in category 'tests') -----
- ----- Method: PointTest>>testZeroPointNormal (in category 'testing - testing') -----
  testZeroPointNormal
  "old: normal of zero point raised divide by zero error.
  new: normal of zero point returns a direction right rotated from zero points direction."
 
  self assert: 90 equals: (0 asPoint normal bearingToPoint: 0 asPoint).!