import { v2 , sub , add , dot , scale , distance , distance2 , normalize , normal , perpDot , translate , Vector2 , rotate2d , } from "./v2" ; test ( "generics + nominal types" , ( ) => { type Millis = number & { _millis : true ; } ; type Nanos = number & { _nanos : true ; } ; const v0 = v2 < Nanos > ( ) ; const v1 = v2 < Nanos > ( ) ; const out = v2 < Millis > ( ) ; add ( out , v0 , v1 ) ; sub ( out , v0 , v1 ) ; dot ( v0 , v2 < Millis > ( ) ) ; const s = sub ( v2 ( ) , v0 , v1 ) ; scale ( out , v0 , 5 ) ; distance ( v1 , v2 < Millis > ( ) ) ; distance2 ( v1 , v2 < Millis > ( ) ) ; normalize ( v1 , v2 < Millis > ( ) ) ; normal ( out , v0 , v1 ) ; perpDot ( v1 , v2 < Millis > ( ) ) ; translate ( out , v0 , v1 ) ; rotate2d ( out , v0 , v1 , Math . PI / 2 ) ; } ) ; test ( "rotate" , ( ) => { const out = v2 ( ) ; const origin = v2 ( ) ; const point = v2 ( 1 , 0 ) ; rotate2d ( out , point , origin , Math . PI / 2 ) ; expect ( out ) . toMatchInlineSnapshot ( `
    Object {
      "x": 6.123233995736766e-17,
      "y": 1,
    }
  ` ) ; } ) ;