// (SASS) True for unit test
$true-terminal-output: false;
@import '../node_modules/sass-true/sass/true';

// Import "Linear Expression" function
@import '../linear-expression';

// Pixels
@include describe('Pixels') {

  // (0px, 0px) to (100px, 100px)
  @include it('Expression for (0px, 0px) to (100px, 100px)') {
    $test: linear-expression(
      $p1: (0px, 0px),
      $p2: (100px, 100px)
    );
    $expect: "(0px + 100vw)";
    @include assert-equal($test, $expect);
  }

  // (320px, 16px) to (1920px, 128px)
  @include it('Expression for (320px, 16px) to (1920px, 128px)') {
    $test: linear-expression(
      $p1: (320px, 16px),
      $p2: (1920px, 128px)
    );
    $expect: "(-6.4px + 7vw)";
    @include assert-equal($test, $expect);
  }

  // (1920px, 128px) to (320px, 16px) 
  @include it('Expression for(1920px, 128px) to (320px, 16px)') {
    $test: linear-expression(
      $p1: (1920px, 128px),
      $p2: (320px, 16px)
    );
    $expect: "(-6.4px + 7vw)";
    @include assert-equal($test, $expect);
  }

  // (314px, 15px) to (1913px, 87px)
  @include it('Expression for (314px, 15px) to (1913px, 87px)') {
    $test: linear-expression(
      $p1: (314px, 15px),
      $p2: (1913px, 87px)
    );
    $expect: "(0.861163227px + 4.5028142589vw)";
    @include assert-equal($test, $expect);
  }

  // (314px, 87px) to (1913px, 15px)
  @include it('Expression for (314px, 87px) to (1913px, 15px)') {
    $test: linear-expression(
      $p1: (314px, 87px),
      $p2: (1913px, 15px)
    );
    $expect: "(101.138836773px + -4.5028142589vw)";
    @include assert-equal($test, $expect);
  }
  
}

// Centimeters
@include describe('Centimeters') {

  @include it('Expression for (5cm, 10cm) to (25cm, 25cm)') {
    $test: linear-expression(
      $p1: (5cm, 10cm),
      $p2: (25cm, 25cm)
    );
    $expect: "(236.220472441px + 75vw)";
    @include assert-equal($test, $expect);
  }

}

// Millimeters
@include describe('Millimeters') {

  @include it('Expression for (50mm, 100mm) to (250mm, 250mm)') {
    $test: linear-expression(
      $p1: (50mm, 100mm),
      $p2: (250mm, 250mm)
    );
    $expect: "(236.220472441px + 75vw)";
    @include assert-equal($test, $expect);
  }
  
}

// Inches
@include describe('Inches') {

  @include it('Expression for (5in, 10in) to (25in, 25in)') {
    $test: linear-expression(
      $p1: (5in, 10in),
      $p2: (25in, 25in)
    );
    $expect: "(600px + 75vw)";
    @include assert-equal($test, $expect);
  }
  
}

// Points 
@include describe('Points') {

  @include it('Expression for (5pt, 10pt) to (25pt, 25pt)') {
    $test: linear-expression(
      $p1: (5pt, 10pt),
      $p2: (25pt, 25pt)
    );
    $expect: "(8.3333333333px + 75vw)";
    @include assert-equal($test, $expect);
  }
  
}

// Picas 
@include describe('Picas') {

  @include it('Expression for (5pc, 10pc) to (25pc, 25pc)') {
    $test: linear-expression(
      $p1: (5pc, 10pc),
      $p2: (25pc, 25pc)
    );
    $expect: "(100px + 75vw)";
    @include assert-equal($test, $expect);
  }
  
}

// Mixed units 
@include describe('Mixed units') {

  @include it('Expression for (5cm, 1in) to (25pc, 250mm)') {
    $test: linear-expression(
      $p1: (5cm, 1in),
      $p2: (25pc, 250mm)
    );
    $expect: "(-664.192737102px + 402.268656716vw)";
    @include assert-equal($test, $expect);
  }
  
}

// Parentheses
@include describe('Parentheses') {

  @include it('Undefined') {
    $test: linear-expression(
      $p1: (0px, 0px),
      $p2: (100px, 100px)
    );
    $expect: "(0px + 100vw)";
    @include assert-equal($test, $expect);
  }

  @include it('With') {
    $test: linear-expression(
      $p1: (0px, 0px),
      $p2: (100px, 100px),
      $parentheses: true
    );
    $expect: "(0px + 100vw)";
    @include assert-equal($test, $expect);
  }

  @include it('Without') {
    $test: linear-expression(
      $p1: (0px, 0px),
      $p2: (100px, 100px),
      $parentheses: false
    );
    $expect: "0px + 100vw";
    @include assert-equal($test, $expect);
  }

}

// Syntax
@include describe('Syntax') {

  @include it('Scss') {
    $test: linear-expression(
      $p1: (314px, 15px),
      $p2: (1913px, 87px)
    );
    $expect: "(0.861163227px + 4.5028142589vw)";
    @include assert-equal($test, $expect);
  }

}
