#!/usr/bin/python

"""Tests for iw.py."""

import iw
from wvtest import wvtest


SCAN_OUTPUT = """BSS 00:23:97:57:f4:d8(on wcli0)
  TSF: 1269828266773 usec (14d, 16:43:48)
  freq: 2437
  beacon interval: 100 TUs
  capability: ESS Privacy ShortSlotTime (0x0411)
  signal: -60.00 dBm
  last seen: 2190 ms ago
  Information elements from Probe Response frame:
  Vendor specific: OUI 00:11:22, data: 01 23 45 67
  SSID: short scan result
  Supported rates: 1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0
  DS Parameter set: channel 6
  ERP: <no flags>
  ERP D4.0: <no flags>
  Privacy:  WEP
  Extended supported rates: 6.0 9.0 12.0 48.0
BSS 94:b4:0f:f1:02:a0(on wcli0)
  TSF: 16233722683 usec (0d, 04:30:33)
  freq: 2412
  beacon interval: 100 TUs
  capability: ESS Privacy ShortPreamble SpectrumMgmt ShortSlotTime RadioMeasure (0x1531)
  signal: -54.00 dBm
  last seen: 2490 ms ago
  Information elements from Probe Response frame:
  SSID: Google
  Supported rates: 36.0* 48.0 54.0
  DS Parameter set: channel 1
  Country: US Environment: Indoor/Outdoor
    Channels [1 - 11] @ 36 dBm
  Power constraint: 0 dB
  TPC report: TX power: 3 dBm
  ERP: <no flags>
  RSN:   * Version: 1
     * Group cipher: CCMP
     * Pairwise ciphers: CCMP
     * Authentication suites: IEEE 802.1X
     * Capabilities: 4-PTKSA-RC 4-GTKSA-RC (0x0028)
  BSS Load:
     * station count: 0
     * channel utilisation: 33/255
     * available admission capacity: 25625 [*32us]
  HT capabilities:
    Capabilities: 0x19ad
      RX LDPC
      HT20
      SM Power Save disabled
      RX HT20 SGI
      TX STBC
      RX STBC 1-stream
      Max AMSDU length: 7935 bytes
      DSSS/CCK HT40
    Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
    Minimum RX AMPDU time spacing: 4 usec (0x05)
    HT RX MCS rate indexes supported: 0-23
    HT TX MCS rate indexes are undefined
  HT operation:
     * primary channel: 1
     * secondary channel offset: no secondary
     * STA channel width: 20 MHz
     * RIFS: 1
     * HT protection: nonmember
     * non-GF present: 0
     * OBSS non-GF present: 1
     * dual beacon: 0
     * dual CTS protection: 0
     * STBC beacon: 0
     * L-SIG TXOP Prot: 0
     * PCO active: 0
     * PCO phase: 0
  Overlapping BSS scan params:
     * passive dwell: 20 TUs
     * active dwell: 10 TUs
     * channel width trigger scan interval: 300 s
     * scan passive total per channel: 200 TUs
     * scan active total per channel: 20 TUs
     * BSS width channel transition delay factor: 5
     * OBSS Scan Activity Threshold: 0.25 %
  Extended capabilities: HT Information Exchange Supported, Extended Channel Switching, BSS Transition, 6
  WMM:   * Parameter version 1
     * u-APSD
     * BE: CW 15-1023, AIFSN 3
     * BK: CW 15-1023, AIFSN 7
     * VI: CW 7-15, AIFSN 2, TXOP 3008 usec
     * VO: CW 3-7, AIFSN 2, TXOP 1504 usec
BSS 94:b4:0f:f1:35:60(on wcli0)
  TSF: 1739987968 usec (0d, 00:28:59)
  freq: 2462
  beacon interval: 100 TUs
  capability: ESS Privacy ShortPreamble SpectrumMgmt ShortSlotTime RadioMeasure (0x1531)
  signal: -39.00 dBm
  last seen: 1910 ms ago
  Information elements from Probe Response frame:
  SSID: Google
  Supported rates: 36.0* 48.0 54.0
  DS Parameter set: channel 11
  Country: US Environment: Indoor/Outdoor
    Channels [1 - 11] @ 36 dBm
  Power constraint: 0 dB
  TPC report: TX power: 3 dBm
  ERP: <no flags>
  RSN:   * Version: 1
     * Group cipher: CCMP
     * Pairwise ciphers: CCMP
     * Authentication suites: IEEE 802.1X
     * Capabilities: 4-PTKSA-RC 4-GTKSA-RC (0x0028)
  BSS Load:
     * station count: 0
     * channel utilisation: 49/255
     * available admission capacity: 26875 [*32us]
  HT capabilities:
    Capabilities: 0x19ad
      RX LDPC
      HT20
      SM Power Save disabled
      RX HT20 SGI
      TX STBC
      RX STBC 1-stream
      Max AMSDU length: 7935 bytes
      DSSS/CCK HT40
    Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
    Minimum RX AMPDU time spacing: 4 usec (0x05)
    HT RX MCS rate indexes supported: 0-23
    HT TX MCS rate indexes are undefined
  HT operation:
     * primary channel: 11
     * secondary channel offset: no secondary
     * STA channel width: 20 MHz
     * RIFS: 1
     * HT protection: nonmember
     * non-GF present: 1
     * OBSS non-GF present: 1
     * dual beacon: 0
     * dual CTS protection: 0
     * STBC beacon: 0
     * L-SIG TXOP Prot: 0
     * PCO active: 0
     * PCO phase: 0
  Overlapping BSS scan params:
     * passive dwell: 20 TUs
     * active dwell: 10 TUs
     * channel width trigger scan interval: 300 s
     * scan passive total per channel: 200 TUs
     * scan active total per channel: 20 TUs
     * BSS width channel transition delay factor: 5
     * OBSS Scan Activity Threshold: 0.25 %
  Extended capabilities: HT Information Exchange Supported, Extended Channel Switching, BSS Transition, 6
  WMM:   * Parameter version 1
     * u-APSD
     * BE: CW 15-1023, AIFSN 3
     * BK: CW 15-1023, AIFSN 7
     * VI: CW 7-15, AIFSN 2, TXOP 3008 usec
     * VO: CW 3-7, AIFSN 2, TXOP 1504 usec
BSS 94:b4:0f:f1:35:61(on wcli0)
  TSF: 1739988134 usec (0d, 00:28:59)
  freq: 2462
  beacon interval: 100 TUs
  capability: ESS ShortPreamble SpectrumMgmt ShortSlotTime RadioMeasure (0x1521)
  signal: -38.00 dBm
  last seen: 1910 ms ago
  Information elements from Probe Response frame:
  SSID: GoogleGuest
  Supported rates: 36.0* 48.0 54.0
  DS Parameter set: channel 11
  Country: US Environment: Indoor/Outdoor
    Channels [1 - 11] @ 36 dBm
  Power constraint: 0 dB
  TPC report: TX power: 3 dBm
  ERP: <no flags>
  BSS Load:
     * station count: 1
     * channel utilisation: 49/255
     * available admission capacity: 26875 [*32us]
  HT capabilities:
    Capabilities: 0x19ad
      RX LDPC
      HT20
      SM Power Save disabled
      RX HT20 SGI
      TX STBC
      RX STBC 1-stream
      Max AMSDU length: 7935 bytes
      DSSS/CCK HT40
    Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
    Minimum RX AMPDU time spacing: 4 usec (0x05)
    HT RX MCS rate indexes supported: 0-23
    HT TX MCS rate indexes are undefined
  HT operation:
     * primary channel: 11
     * secondary channel offset: no secondary
     * STA channel width: 20 MHz
     * RIFS: 1
     * HT protection: nonmember
     * non-GF present: 1
     * OBSS non-GF present: 1
     * dual beacon: 0
     * dual CTS protection: 0
     * STBC beacon: 0
     * L-SIG TXOP Prot: 0
     * PCO active: 0
     * PCO phase: 0
  Overlapping BSS scan params:
     * passive dwell: 20 TUs
     * active dwell: 10 TUs
     * channel width trigger scan interval: 300 s
     * scan passive total per channel: 200 TUs
     * scan active total per channel: 20 TUs
     * BSS width channel transition delay factor: 5
     * OBSS Scan Activity Threshold: 0.25 %
  Extended capabilities: HT Information Exchange Supported, Extended Channel Switching, BSS Transition, 6
  WMM:   * Parameter version 1
     * u-APSD
     * BE: CW 15-1023, AIFSN 3
     * BK: CW 15-1023, AIFSN 7
     * VI: CW 7-15, AIFSN 2, TXOP 3008 usec
     * VO: CW 3-7, AIFSN 2, TXOP 1504 usec
BSS 94:b4:0f:f1:3a:e0(on wcli0)
  TSF: 24578560051 usec (0d, 06:49:38)
  freq: 2437
  beacon interval: 100 TUs
  capability: ESS Privacy ShortPreamble SpectrumMgmt ShortSlotTime RadioMeasure (0x1531)
  signal: -55.00 dBm
  last seen: 2310 ms ago
  Information elements from Probe Response frame:
  SSID: Google
  Supported rates: 36.0* 48.0 54.0
  DS Parameter set: channel 6
  TIM: DTIM Count 0 DTIM Period 1 Bitmap Control 0x0 Bitmap[0] 0x0
  Country: US Environment: Indoor/Outdoor
    Channels [1 - 11] @ 36 dBm
  Power constraint: 0 dB
  TPC report: TX power: 3 dBm
  ERP: <no flags>
  RSN:   * Version: 1
     * Group cipher: CCMP
     * Pairwise ciphers: CCMP
     * Authentication suites: IEEE 802.1X
     * Capabilities: 4-PTKSA-RC 4-GTKSA-RC (0x0028)
  BSS Load:
     * station count: 1
     * channel utilisation: 21/255
     * available admission capacity: 28125 [*32us]
  HT capabilities:
    Capabilities: 0x19ad
      RX LDPC
      HT20
      SM Power Save disabled
      RX HT20 SGI
      TX STBC
      RX STBC 1-stream
      Max AMSDU length: 7935 bytes
      DSSS/CCK HT40
    Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
    Minimum RX AMPDU time spacing: 4 usec (0x05)
    HT RX MCS rate indexes supported: 0-23
    HT TX MCS rate indexes are undefined
  HT operation:
     * primary channel: 6
     * secondary channel offset: no secondary
     * STA channel width: 20 MHz
     * RIFS: 1
     * HT protection: nonmember
     * non-GF present: 1
     * OBSS non-GF present: 1
     * dual beacon: 0
     * dual CTS protection: 0
     * STBC beacon: 0
     * L-SIG TXOP Prot: 0
     * PCO active: 0
     * PCO phase: 0
  Overlapping BSS scan params:
     * passive dwell: 20 TUs
     * active dwell: 10 TUs
     * channel width trigger scan interval: 300 s
     * scan passive total per channel: 200 TUs
     * scan active total per channel: 20 TUs
     * BSS width channel transition delay factor: 5
     * OBSS Scan Activity Threshold: 0.25 %
  Extended capabilities: HT Information Exchange Supported, Extended Channel Switching, BSS Transition, 6
  WMM:   * Parameter version 1
     * u-APSD
     * BE: CW 15-1023, AIFSN 3
     * BK: CW 15-1023, AIFSN 7
     * VI: CW 7-15, AIFSN 2, TXOP 3008 usec
     * VO: CW 3-7, AIFSN 2, TXOP 1504 usec
BSS 94:b4:0f:f1:3a:e1(on wcli0)
  TSF: 24578576547 usec (0d, 06:49:38)
  freq: 2437
  beacon interval: 100 TUs
  capability: ESS ShortPreamble SpectrumMgmt ShortSlotTime RadioMeasure (0x1521)
  signal: -65.00 dBm
  last seen: 80 ms ago
  Information elements from Probe Response frame:
  SSID: GoogleGuest
  Supported rates: 36.0* 48.0 54.0
  DS Parameter set: channel 6
  Country: US Environment: Indoor/Outdoor
    Channels [1 - 11] @ 36 dBm
  Power constraint: 0 dB
  TPC report: TX power: 3 dBm
  ERP: <no flags>
  BSS Load:
     * station count: 2
     * channel utilisation: 21/255
     * available admission capacity: 28125 [*32us]
  HT capabilities:
    Capabilities: 0x19ad
      RX LDPC
      HT20
      SM Power Save disabled
      RX HT20 SGI
      TX STBC
      RX STBC 1-stream
      Max AMSDU length: 7935 bytes
      DSSS/CCK HT40
    Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
    Minimum RX AMPDU time spacing: 4 usec (0x05)
    HT RX MCS rate indexes supported: 0-23
    HT TX MCS rate indexes are undefined
  HT operation:
     * primary channel: 6
     * secondary channel offset: no secondary
     * STA channel width: 20 MHz
     * RIFS: 1
     * HT protection: nonmember
     * non-GF present: 1
     * OBSS non-GF present: 1
     * dual beacon: 0
     * dual CTS protection: 0
     * STBC beacon: 0
     * L-SIG TXOP Prot: 0
     * PCO active: 0
     * PCO phase: 0
  Overlapping BSS scan params:
     * passive dwell: 20 TUs
     * active dwell: 10 TUs
     * channel width trigger scan interval: 300 s
     * scan passive total per channel: 200 TUs
     * scan active total per channel: 20 TUs
     * BSS width channel transition delay factor: 5
     * OBSS Scan Activity Threshold: 0.25 %
  Extended capabilities: HT Information Exchange Supported, Extended Channel Switching, BSS Transition, 6
  WMM:   * Parameter version 1
     * u-APSD
     * BE: CW 15-1023, AIFSN 3
     * BK: CW 15-1023, AIFSN 7
     * VI: CW 7-15, AIFSN 2, TXOP 3008 usec
     * VO: CW 3-7, AIFSN 2, TXOP 1504 usec

BSS 94:b4:0f:f1:36:41(on wcli0)
  TSF: 12499149351 usec (0d, 03:28:19)
  freq: 2437
  beacon interval: 100 TUs
  capability: ESS ShortPreamble SpectrumMgmt ShortSlotTime RadioMeasure (0x1521)
  signal: -67.00 dBm
  last seen: 80 ms ago
  Information elements from Probe Response frame:
  SSID: GoogleGuest
  Supported rates: 36.0* 48.0 54.0
  DS Parameter set: channel 6
  Country: US Environment: Indoor/Outdoor
    Channels [1 - 11] @ 36 dBm
  Power constraint: 0 dB
  TPC report: TX power: 3 dBm
  ERP: <no flags>
  BSS Load:
     * station count: 1
     * channel utilisation: 28/255
     * available admission capacity: 27500 [*32us]
  HT capabilities:
    Capabilities: 0x19ad
      RX LDPC
      HT20
      SM Power Save disabled
      RX HT20 SGI
      TX STBC
      RX STBC 1-stream
      Max AMSDU length: 7935 bytes
      DSSS/CCK HT40
    Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
    Minimum RX AMPDU time spacing: 4 usec (0x05)
    HT RX MCS rate indexes supported: 0-23
    HT TX MCS rate indexes are undefined
  HT operation:
     * primary channel: 6
     * secondary channel offset: no secondary
     * STA channel width: 20 MHz
     * RIFS: 1
     * HT protection: nonmember
     * non-GF present: 1
     * OBSS non-GF present: 1
     * dual beacon: 0
     * dual CTS protection: 0
     * STBC beacon: 0
     * L-SIG TXOP Prot: 0
     * PCO active: 0
     * PCO phase: 0
  Overlapping BSS scan params:
     * passive dwell: 20 TUs
     * active dwell: 10 TUs
     * channel width trigger scan interval: 300 s
     * scan passive total per channel: 200 TUs
     * scan active total per channel: 20 TUs
     * BSS width channel transition delay factor: 5
     * OBSS Scan Activity Threshold: 0.25 %
  Extended capabilities: HT Information Exchange Supported, Extended Channel Switching, BSS Transition, 6
  WMM:   * Parameter version 1
     * u-APSD
     * BE: CW 15-1023, AIFSN 3
     * BK: CW 15-1023, AIFSN 7
     * VI: CW 7-15, AIFSN 2, TXOP 3008 usec
     * VO: CW 3-7, AIFSN 2, TXOP 1504 usec
BSS 94:b4:0f:f1:36:40(on wcli0)
  TSF: 12499150000 usec (0d, 03:28:19)
  freq: 2437
  beacon interval: 100 TUs
  capability: ESS Privacy ShortPreamble SpectrumMgmt ShortSlotTime RadioMeasure (0x1531)
  signal: -66.00 dBm
  last seen: 2350 ms ago
  Information elements from Probe Response frame:
  SSID: Google
  Supported rates: 36.0* 48.0 54.0
  DS Parameter set: channel 6
  TIM: DTIM Count 0 DTIM Period 1 Bitmap Control 0x0 Bitmap[0] 0x0
  Country: US Environment: Indoor/Outdoor
    Channels [1 - 11] @ 36 dBm
  Power constraint: 0 dB
  TPC report: TX power: 3 dBm
  ERP: <no flags>
  RSN:   * Version: 1
     * Group cipher: CCMP
     * Pairwise ciphers: CCMP
     * Authentication suites: IEEE 802.1X
     * Capabilities: 4-PTKSA-RC 4-GTKSA-RC (0x0028)
  BSS Load:
     * station count: 0
     * channel utilisation: 28/255
     * available admission capacity: 27500 [*32us]
  HT capabilities:
    Capabilities: 0x19ad
      RX LDPC
      HT20
      SM Power Save disabled
      RX HT20 SGI
      TX STBC
      RX STBC 1-stream
      Max AMSDU length: 7935 bytes
      DSSS/CCK HT40
    Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
    Minimum RX AMPDU time spacing: 4 usec (0x05)
    HT RX MCS rate indexes supported: 0-23
    HT TX MCS rate indexes are undefined
  HT operation:
     * primary channel: 6
     * secondary channel offset: no secondary
     * STA channel width: 20 MHz
     * RIFS: 1
     * HT protection: nonmember
     * non-GF present: 1
     * OBSS non-GF present: 1
     * dual beacon: 0
     * dual CTS protection: 0
     * STBC beacon: 0
     * L-SIG TXOP Prot: 0
     * PCO active: 0
     * PCO phase: 0
  Overlapping BSS scan params:
     * passive dwell: 20 TUs
     * active dwell: 10 TUs
     * channel width trigger scan interval: 300 s
     * scan passive total per channel: 200 TUs
     * scan active total per channel: 20 TUs
     * BSS width channel transition delay factor: 5
     * OBSS Scan Activity Threshold: 0.25 %
  Extended capabilities: HT Information Exchange Supported, Extended Channel Switching, BSS Transition, 6
  WMM:   * Parameter version 1
     * u-APSD
     * BE: CW 15-1023, AIFSN 3
     * BK: CW 15-1023, AIFSN 7
     * VI: CW 7-15, AIFSN 2, TXOP 3008 usec
     * VO: CW 3-7, AIFSN 2, TXOP 1504 usec
BSS 94:b4:0f:f1:36:42(on wcli0)
  TSF: 12499150000 usec (0d, 03:28:19)
  freq: 2437
  beacon interval: 100 TUs
  capability: ESS Privacy ShortPreamble SpectrumMgmt ShortSlotTime RadioMeasure (0x1531)
  signal: -66.00 dBm
  last seen: 2350 ms ago
  Information elements from Probe Response frame:
  SSID:
  Supported rates: 36.0* 48.0 54.0
  DS Parameter set: channel 6
  TIM: DTIM Count 0 DTIM Period 1 Bitmap Control 0x0 Bitmap[0] 0x0
  Country: US Environment: Indoor/Outdoor
    Channels [1 - 11] @ 36 dBm
  Power constraint: 0 dB
  TPC report: TX power: 3 dBm
  ERP: <no flags>
  BSS Load:
     * station count: 0
     * channel utilisation: 28/255
     * available admission capacity: 27500 [*32us]
  HT capabilities:
    Capabilities: 0x19ad
      RX LDPC
      HT20
      SM Power Save disabled
      RX HT20 SGI
      TX STBC
      RX STBC 1-stream
      Max AMSDU length: 7935 bytes
      DSSS/CCK HT40
    Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
    Minimum RX AMPDU time spacing: 4 usec (0x05)
    HT RX MCS rate indexes supported: 0-23
    HT TX MCS rate indexes are undefined
  HT operation:
     * primary channel: 6
     * secondary channel offset: no secondary
     * STA channel width: 20 MHz
     * RIFS: 1
     * HT protection: nonmember
     * non-GF present: 1
     * OBSS non-GF present: 1
     * dual beacon: 0
     * dual CTS protection: 0
     * STBC beacon: 0
     * L-SIG TXOP Prot: 0
     * PCO active: 0
     * PCO phase: 0
  Overlapping BSS scan params:
     * passive dwell: 20 TUs
     * active dwell: 10 TUs
     * channel width trigger scan interval: 300 s
     * scan passive total per channel: 200 TUs
     * scan active total per channel: 20 TUs
     * BSS width channel transition delay factor: 5
     * OBSS Scan Activity Threshold: 0.25 %
  Extended capabilities: HT Information Exchange Supported, Extended Channel Switching, BSS Transition, 6
  WMM:   * Parameter version 1
     * u-APSD
     * BE: CW 15-1023, AIFSN 3
     * BK: CW 15-1023, AIFSN 7
     * VI: CW 7-15, AIFSN 2, TXOP 3008 usec
     * VO: CW 3-7, AIFSN 2, TXOP 1504 usec
  Vendor specific: OUI 00:11:22, data: 01 23 45 67
  Vendor specific: OUI f4:f5:e8, data: 03 47 46 69 62 65 72 53 65 74 75 70 41 75 74 6f 6d 61 74 69 6f 6e
BSS f4:f5:e8:f1:36:43(on wcli0)
  TSF: 12499150000 usec (0d, 03:28:19)
  freq: 2437
  beacon interval: 100 TUs
  capability: ESS Privacy ShortPreamble SpectrumMgmt ShortSlotTime RadioMeasure (0x1531)
  signal: -66.00 dBm
  last seen: 2350 ms ago
  Information elements from Probe Response frame:
  SSID:
  Supported rates: 36.0* 48.0 54.0
  DS Parameter set: channel 6
  TIM: DTIM Count 0 DTIM Period 1 Bitmap Control 0x0 Bitmap[0] 0x0
  Country: US Environment: Indoor/Outdoor
    Channels [1 - 11] @ 36 dBm
  Power constraint: 0 dB
  TPC report: TX power: 3 dBm
  ERP: <no flags>
  BSS Load:
     * station count: 0
     * channel utilisation: 28/255
     * available admission capacity: 27500 [*32us]
  HT capabilities:
    Capabilities: 0x19ad
      RX LDPC
      HT20
      SM Power Save disabled
      RX HT20 SGI
      TX STBC
      RX STBC 1-stream
      Max AMSDU length: 7935 bytes
      DSSS/CCK HT40
    Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
    Minimum RX AMPDU time spacing: 4 usec (0x05)
    HT RX MCS rate indexes supported: 0-23
    HT TX MCS rate indexes are undefined
  HT operation:
     * primary channel: 6
     * secondary channel offset: no secondary
     * STA channel width: 20 MHz
     * RIFS: 1
     * HT protection: nonmember
     * non-GF present: 1
     * OBSS non-GF present: 1
     * dual beacon: 0
     * dual CTS protection: 0
     * STBC beacon: 0
     * L-SIG TXOP Prot: 0
     * PCO active: 0
     * PCO phase: 0
  Overlapping BSS scan params:
     * passive dwell: 20 TUs
     * active dwell: 10 TUs
     * channel width trigger scan interval: 300 s
     * scan passive total per channel: 200 TUs
     * scan active total per channel: 20 TUs
     * BSS width channel transition delay factor: 5
     * OBSS Scan Activity Threshold: 0.25 %
  Extended capabilities: HT Information Exchange Supported, Extended Channel Switching, BSS Transition, 6
  WMM:   * Parameter version 1
     * u-APSD
     * BE: CW 15-1023, AIFSN 3
     * BK: CW 15-1023, AIFSN 7
     * VI: CW 7-15, AIFSN 2, TXOP 3008 usec
     * VO: CW 3-7, AIFSN 2, TXOP 1504 usec
"""


# pylint: disable=unused-argument,protected-access
def fake_scan(*args, **kwargs):
  return SCAN_OUTPUT
iw._scan = fake_scan


@wvtest.wvtest
def find_bssids_test():
  """Test iw.find_bssids."""
  test_ie = ('00:11:22', '01 23 45 67')
  ssid_ie = (
      'f4:f5:e8',
      '03 47 46 69 62 65 72 53 65 74 75 70 41 75 74 6f 6d 61 74 69 6f 6e',
  )
  short_scan_result = iw.BssInfo(ssid='short scan result',
                                 bssid='00:23:97:57:f4:d8',
                                 security=['WEP'],
                                 vendor_ies=[test_ie])
  provisioning_bss_info = iw.BssInfo(ssid=iw.DEFAULT_GFIBERSETUP_SSID,
                                     bssid='94:b4:0f:f1:36:42',
                                     vendor_ies=[test_ie, ssid_ie])
  provisioning_bss_info_frenzy = iw.BssInfo(ssid=iw.DEFAULT_GFIBERSETUP_SSID,
                                            bssid='f4:f5:e8:f1:36:43')

  with_ie, without_ie = iw.find_bssids('wcli0', lambda o, d: o == '00:11:22',
                                       True)

  wvtest.WVPASSEQ(with_ie, set([short_scan_result, provisioning_bss_info]))

  wvtest.WVPASSEQ(
      without_ie,
      set([provisioning_bss_info_frenzy,
           iw.BssInfo(ssid='GoogleGuest', bssid='94:b4:0f:f1:36:41'),
           iw.BssInfo(ssid='GoogleGuest', bssid='94:b4:0f:f1:3a:e1'),
           iw.BssInfo(ssid='GoogleGuest', bssid='94:b4:0f:f1:35:61'),
           iw.BssInfo(ssid='Google', bssid='94:b4:0f:f1:36:40',
                      security=['WPA2']),
           iw.BssInfo(ssid='Google', bssid='94:b4:0f:f1:3a:e0',
                      security=['WPA2']),
           iw.BssInfo(ssid='Google', bssid='94:b4:0f:f1:35:60',
                      security=['WPA2']),
           iw.BssInfo(ssid='Google', bssid='94:b4:0f:f1:02:a0',
                      security=['WPA2'])]))

  with_ie, without_ie = iw.find_bssids('wcli0', lambda o, d: o == '00:11:22',
                                       False)
  wvtest.WVPASSEQ(with_ie, set([provisioning_bss_info]))
  wvtest.WVPASSEQ(
      without_ie,
      set([provisioning_bss_info_frenzy,
           iw.BssInfo(ssid='GoogleGuest', bssid='94:b4:0f:f1:36:41'),
           iw.BssInfo(ssid='GoogleGuest', bssid='94:b4:0f:f1:3a:e1'),
           iw.BssInfo(ssid='GoogleGuest', bssid='94:b4:0f:f1:35:61')]))

if __name__ == '__main__':
  wvtest.wvtest_main()
