@use "true" as *;
@use "example" as *;
@use "../src/utils/os" as *;
@use "../src/utils/mode";

@include test-module("Create OS related media - ESR [mix]") {
  @include mode.ESR;

  @include test("win7") {
    @include assert {
      @include output {
        @include OS($win7) {
          @include example;
        }
      }
      @include expect {
        @media (-moz-os-version: windows-win7), (-moz-platform: windows-win7) {
          @include example;
        }
      }
    }
  }

  @include test("win8") {
    @include assert {
      @include output {
        @include OS($win8) {
          @include example;
        }
      }
      @include expect {
        @media (-moz-os-version: windows-win8), (-moz-platform: windows-win8) {
          @include example;
        }
      }
    }
  }

  @include test("win10") {
    @include assert {
      @include output {
        @include OS($win10) {
          @include example;
        }
      }
      @include expect {
        @media (-moz-os-version: windows-win10), (-moz-platform: windows-win10) {
          @include example;
        }
      }
    }
  }

  @include test("linux") {
    @include assert {
      @include output {
        @include OS($linux) {
          @include example;
        }
      }
      @include expect {
        @media (-moz-gtk-csd-available) {
          @include example;
        }
      }
    }
  }

  @include test("mac") {
    @include assert {
      @include output {
        @include OS($mac) {
          @include example;
        }
      }
      @include expect {
        @supports -moz-bool-pref("layout.css.osx-font-smoothing.enabled") {
          @include example;
        }
      }
    }
  }

  @include test("bigsur") {
    @include assert {
      @include output {
        @include OS($bigsur) {
          @include example;
        }
      }
      @include expect {
        @media (-moz-mac-big-sur-theme: 0) {
          @include example;
        }
      }
    }
  }

  @include test("win") {
    @include assert {
      @include output {
        @include OS($win) {
          @include example;
        }
      }
      @include expect {
        @media (-moz-os-version: windows-win7), (-moz-os-version: windows-win8), (-moz-os-version: windows-win10), (-moz-platform: windows) {
          @include example;
        }
      }
    }
  }

  @include test("all os - win7, win8, win10, mac, bigsur, linux") {
    @include assert {
      @include output {
        @include OS($win7, $win8, $win10, $mac, $bigsur, $linux) {
          @include example;
        }
      }
      @include expect {
        @media (-moz-os-version: windows-win7), (-moz-platform: windows-win7), (-moz-os-version: windows-win8), (-moz-platform: windows-win8), (-moz-os-version: windows-win10), (-moz-platform: windows-win10), (-moz-mac-big-sur-theme: 0), (-moz-gtk-csd-available) {
          @include example;
        }
        @supports -moz-bool-pref("layout.css.osx-font-smoothing.enabled") {
          @include example;
        }
      }
    }
  }

  @include test("all os - win, mac, bigsur, linux") {
    @include assert {
      @include output {
        @include OS($win, $mac, $bigsur, $linux) {
          @include example;
        }
      }
      @include expect {
        @media (-moz-os-version: windows-win7), (-moz-os-version: windows-win8), (-moz-os-version: windows-win10), (-moz-platform: windows), (-moz-mac-big-sur-theme: 0), (-moz-gtk-csd-available) {
          @include example;
        }
        @supports -moz-bool-pref("layout.css.osx-font-smoothing.enabled") {
          @include example;
        }
      }
    }
  }

  @include test("windows classic theme") {
    @include assert {
      @include output {
        @include WinClassic {
          @include example;
        }
      }
      @include expect {
        @media (-moz-windows-classic) {
          @include example;
        }
      }
    }
  }
}

@include test-module("Create OS related media - Standard [mix]") {
  @include mode.STANDARD;

  @include test("win7") {
    @include assert {
      @include output {
        @include OS($win7) {
          @include example;
        }
      }
      @include expect {
        // IGNORE
      }
    }
  }

  @include test("win8") {
    @include assert {
      @include output {
        @include OS($win8) {
          @include example;
        }
      }
      @include expect {
        // IGNORE
      }
    }
  }

  @include test("win10") {
    @include assert {
      @include output {
        @include OS($win10) {
          @include example;
        }
      }
      @include expect {
        // AS Windows
        @media (-moz-platform: windows) {
          @include example;
        }
      }
    }
  }

  @include test("linux") {
    @include assert {
      @include output {
        @include OS($linux) {
          @include example;
        }
      }
      @include expect {
        @media (-moz-gtk-csd-available) {
          @include example;
        }
      }
    }
  }

  @include test("mac") {
    @include assert {
      @include output {
        @include OS($mac) {
          @include example;
        }
      }
      @include expect {
        @supports -moz-bool-pref("layout.css.osx-font-smoothing.enabled") {
          @include example;
        }
      }
    }
  }

  @include test("bigsur") {
    @include assert {
      @include output {
        @include OS($bigsur) {
          @include example;
        }
      }
      @include expect {
        @media (-moz-mac-big-sur-theme: 0) {
          @include example;
        }
      }
    }
  }

  @include test("win") {
    @include assert {
      @include output {
        @include OS($win) {
          @include example;
        }
      }
      @include expect {
        @media (-moz-platform: windows) {
          @include example;
        }
      }
    }
  }

  @include test("all os - win7, win8, win10, mac, bigsur, linux") {
    @include assert {
      @include output {
        @include OS($win7, $win8, $win10, $mac, $bigsur, $linux) {
          @include example;
        }
      }
      @include expect {
        @media  (-moz-platform: windows), (-moz-mac-big-sur-theme: 0), (-moz-gtk-csd-available) {
          @include example;
        }
        @supports -moz-bool-pref("layout.css.osx-font-smoothing.enabled") {
          @include example;
        }
      }
    }
  }

  @include test("all os - win, mac, bigsur, linux") {
    @include assert {
      @include output {
        @include OS($win, $mac, $bigsur, $linux) {
          @include example;
        }
      }
      @include expect {
        @media (-moz-platform: windows), (-moz-mac-big-sur-theme: 0), (-moz-gtk-csd-available) {
          @include example;
        }
        @supports -moz-bool-pref("layout.css.osx-font-smoothing.enabled") {
          @include example;
        }
      }
    }
  }

  @include test("windows classic theme") {
    @include assert {
      @include output {
        @include WinClassic {
          @include example;
        }
      }
      @include expect {
        // IGNORE
      }
    }
  }
}
