package Ġde . fab max . k ool . math Ċ Ċ import Ġkotlin . math . sqrt Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertTrue Ċ Ċ /** Ċ Ġ* ĠTests Ġfor ĠVec Ġclass Ċ Ġ*/ Ċ class ĠVec Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvec 3 Consts () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Vec 3 f . X _ AXIS . x Ġ== Ġ 1 f Ġ&& ĠVec 3 f . X _ AXIS . y Ġ== Ġ 0 f Ġ&& ĠVec 3 f . X _ AXIS . z Ġ== Ġ 0 f , Ġ" x Ġ!= Ġ( 1 , Ġ 0 , Ġ 0 )") ĊĠĠĠĠĠĠĠ ĠassertTrue ( Vec 3 f . Y _ AXIS . x Ġ== Ġ 0 f Ġ&& ĠVec 3 f . Y _ AXIS . y Ġ== Ġ 1 f Ġ&& ĠVec 3 f . Y _ AXIS . z Ġ== Ġ 0 f , Ġ" y Ġ!= Ġ( 0 , Ġ 1 , Ġ 0 )") ĊĠĠĠĠĠĠĠ ĠassertTrue ( Vec 3 f . Z _ AXIS . x Ġ== Ġ 0 f Ġ&& ĠVec 3 f . Z _ AXIS . y Ġ== Ġ 0 f Ġ&& ĠVec 3 f . Z _ AXIS . z Ġ== Ġ 1 f , Ġ" z Ġ!= Ġ( 0 , Ġ 0 , Ġ 1 )") ĊĠĠĠĠĠĠĠ ĠassertTrue ( Vec 3 f . ZERO . x Ġ== Ġ 0 f Ġ&& ĠVec 3 f . ZERO . y Ġ== Ġ 0 f Ġ&& ĠVec 3 f . ZERO . z Ġ== Ġ 0 f , Ġ" 0 Ġ!= Ġ( 0 , Ġ 0 , Ġ 0 )") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvec 3 Len () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġt Ġ= ĠVec 3 f ( 2 f , Ġ 3 f , Ġ 4 f ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( is F uzzy Equal ( t . sqr Length (), Ġ 2 9 f ), Ġ" sqr Len Ġfailed ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( is F uzzy Equal ( t . length (), Ġsqrt ( 2 9 f )), Ġ" length Ġfailed ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( is F uzzy Equal ( t . norm ( Mutable Vec 3 f ()). length (), Ġ 1 f ), Ġ" norm Ġfailed ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvec 3 Add () Ġ= ĠassertTrue ( add ( Vec 3 f ( 1 f , Ġ 2 f , Ġ 3 f ), ĠVec 3 f ( 2 f , Ġ 3 f , Ġ 4 f )). is F uzzy Equal ( Vec 3 f ( 3 f , Ġ 5 f , Ġ 7 f ))) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvec 3 Sub () Ġ= ĠassertTrue ( subtract ( Vec 3 f ( 2 f , Ġ 3 f , Ġ 4 f ), ĠVec 3 f ( 1 f , Ġ 2 f , Ġ 3 f )). is F uzzy Equal ( Vec 3 f ( 1 f , Ġ 1 f , Ġ 1 f ))) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvec 3 Scale () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( scale ( Vec 3 f ( 1 f , Ġ 2 f , Ġ 3 f ), Ġ 2 f ). is F uzzy Equal ( Vec 3 f ( 2 f , Ġ 4 f , Ġ 6 f ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvec 3 Dist () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( is F uzzy Equal ( Vec 3 f ( 1 f , Ġ 2 f , Ġ 3 f ). distance ( Vec 3 f . ZERO ), ĠVec 3 f ( 1 f , Ġ 2 f , Ġ 3 f ). length ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvec 3 Dot () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġdot Ġprod ĊĠĠĠĠĠĠĠ ĠassertEquals ( Vec 3 f . X _ AXIS Ġ* ĠVec 3 f . X _ AXIS , Ġ 1 f , Ġ" x Ġ* Ġx Ġ!= Ġ 1 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Vec 3 f . Y _ AXIS Ġ* ĠVec 3 f . Y _ AXIS , Ġ 1 f , Ġ" y Ġ* Ġy Ġ!= Ġ 1 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Vec 3 f . Z _ AXIS Ġ* ĠVec 3 f . Z _ AXIS , Ġ 1 f , Ġ" z Ġ* Ġz Ġ!= Ġ 1 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Vec 3 f . X _ AXIS Ġ* ĠVec 3 f . Y _ AXIS , Ġ 0 f , Ġ" x Ġ* Ġy Ġ!= Ġ 0 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Vec 3 f . X _ AXIS Ġ* ĠVec 3 f . Z _ AXIS , Ġ 0 f , Ġ" x Ġ* Ġz Ġ!= Ġ 0 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Vec 3 f . Y _ AXIS Ġ* ĠVec 3 f . Z _ AXIS , Ġ 0 f , Ġ" y Ġ* Ġz Ġ!= Ġ 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvec 3 Cross () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġdot Ġprod ĊĠĠĠĠĠĠĠ ĠassertTrue ( cross ( Vec 3 f . X _ AXIS , ĠVec 3 f . Y _ AXIS ). is F uzzy Equal ( Vec 3 f . Z _ AXIS ), Ġ" x Ġ* Ġy Ġ!= Ġz ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( cross ( Vec 3 f . Z _ AXIS , ĠVec 3 f . X _ AXIS ). is F uzzy Equal ( Vec 3 f . Y _ AXIS ), Ġ" z Ġ* Ġx Ġ!= Ġy ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( cross ( Vec 3 f . Y _ AXIS , ĠVec 3 f . Z _ AXIS ). is F uzzy Equal ( Vec 3 f . X _ AXIS ), Ġ" y Ġ* Ġz Ġ!= Ġx ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvec 3 Rotate () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġdot Ġprod ĊĠĠĠĠĠĠĠ ĠassertTrue ( Vec 3 f . X _ AXIS . rotate ( 9 0 f , ĠVec 3 f . Z _ AXIS , ĠMutable Vec 3 f ()). is F uzzy Equal ( Vec 3 f . Y _ AXIS ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x . rot ( 9 0 , Ġz ) Ġ!= Ġy ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( Vec 3 f . Y _ AXIS . rotate ( 9 0 f , ĠVec 3 f . X _ AXIS , ĠMutable Vec 3 f ()). is F uzzy Equal ( Vec 3 f . Z _ AXIS ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" y . rot ( 9 0 , Ġz ) Ġ!= Ġz ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( Vec 3 f . Z _ AXIS . rotate ( 9 0 f , ĠVec 3 f . Y _ AXIS , ĠMutable Vec 3 f ()). is F uzzy Equal ( Vec 3 f . X _ AXIS ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" z . rot ( 9 0 , Ġy ) Ġ!= Ġx ") ĊĠĠĠ Ġ} Ċ } Ċ