#!/bin/sh

# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# UDEV event helper script that sets the system's WiFi regulatory domain
# from VPD data.

# Assertion helpers.
assert_equal() {
  local actual="$1"
  local expected="$2"

  if [ "${actual}" != "${expected}" ]; then
    echo "FAIL: expected |${expected}|, got |${actual}|"
    exit 1
  fi
}

assert_regdomain_is() {
  local expected_code="$1"
  g_vpd_data="$(cat)"
  g_country_code=""

  . $(dirname $0)/set_wifi_regulatory
  assert_equal "${g_country_code}" "${expected_code}"
}

# Fake out the commands that are called by set_wifi_regulatory.
vpd_get_value() {
  assert_equal "$1" "region"
  echo "${g_vpd_data}"
}

iw() {
  assert_equal "$1" "reg"
  assert_equal "$2" "set"
  g_country_code="$3"
}

# Simplest input.
assert_regdomain_is US <<-"EOF"
US
EOF

# Properly handle lower-case region.
assert_regdomain_is US <<-"EOF"
us
EOF

# If region exists multiple times, take the first one.
assert_regdomain_is JP <<-"EOF"
JP
EOF

# Other fields can come before.
assert_regdomain_is US <<-"EOF"
us
EOF

# Other fields can come after.
assert_regdomain_is US <<-"EOF"
us
EOF

# Region may include additional data after country code (1/2).
assert_regdomain_is CA <<-"EOF"
ca.hybrid
EOF

# Region may include additional data after country code (2/2).
assert_regdomain_is BR <<-"EOF"
br.abnt
EOF

# Virtual regions work correctly (1/2).
assert_regdomain_is SE <<-"EOF"
nordic
EOF

# Virtual regions work correctly (2/2).
assert_regdomain_is "MX" <<-"EOF"
latam-es-419
EOF

# Must match "region" exactly.
assert_regdomain_is "" <<-"EOF"
EOF

# Random shell meta-characters are not allowed.
assert_regdomain_is "" <<-"EOF"
ca>>/var/log/junk
EOF

echo "PASS"
