parameters:
  cmd: test
  rust_version: stable
  features: []

jobs:
- job: ${{ parameters.name }}
  displayName: ${{ parameters.displayName }}
  strategy:
    matrix:
      Linux:
        vmImage: ubuntu-16.04

      ${{ if parameters.cross }}:
        MacOS:
          vmImage: macOS-10.13
        Windows:
          vmImage: vs2017-win2016
  pool:
    vmImage: $(vmImage)

  steps:
  - template: azure-install-rust.yml
    parameters:
      rust_version: ${{parameters.rust_version}}

  # Run with default crate features
  - script: cargo ${{ parameters.cmd }}
    displayName: cargo ${{ parameters.cmd }}

  # Run with each specified feature
  - ${{ each feature in parameters.features.value }}:
    - script: cargo ${{ parameters.cmd }} --features ${{ feature }}
      displayName: cargo ${{ parameters.cmd }} --tests --features ${{ feature }}

  - ${{ if eq(parameters.cmd, 'test') }}:
    - script: cargo doc --no-deps
      displayName: cargo doc --no-deps

  - ${{ if parameters.benches }}:
    - script: cargo check --benches
      displayName: Check benchmarks