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

// @dart = 2.9
import 'dart:io';
import 'package:integration_test/integration_test.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:wifi_info_flutter/wifi_info_flutter.dart';

void main() {
  IntegrationTestWidgetsFlutterBinding.ensureInitialized();

  group('$WifiInfo test driver', () {
    WifiInfo _wifiInfo;

    setUpAll(() async {
      _wifiInfo = WifiInfo();
    });

    testWidgets('test location methods, iOS only', (WidgetTester tester) async {
      expect(
        (await _wifiInfo.getLocationServiceAuthorization()),
        LocationAuthorizationStatus.notDetermined,
      );
    }, skip: !Platform.isIOS);
  });
}
