| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'package:flutter_tools/src/base/os.dart'; |
| import 'package:flutter_tools/src/doctor_validator.dart'; |
| import 'package:flutter_tools/src/windows/windows_version_validator.dart'; |
| import 'package:test/fake.dart'; |
| |
| import '../src/common.dart'; |
| |
| /// Fake [_WindowsUtils] to use for testing |
| class FakeValidOperatingSystemUtils extends Fake |
| implements OperatingSystemUtils { |
| FakeValidOperatingSystemUtils( |
| [this.name = 'Microsoft Windows [Version 11.0.22621.963]']); |
| |
| @override |
| final String name; |
| } |
| |
| /// The expected validation result object for |
| /// a passing windows version test |
| const ValidationResult validWindows10ValidationResult = ValidationResult( |
| ValidationType.success, |
| <ValidationMessage>[], |
| statusInfo: 'Installed version of Windows is version 10 or higher', |
| ); |
| |
| /// The expected validation result object for |
| /// a passing windows version test |
| const ValidationResult invalidWindowsValidationResult = ValidationResult( |
| ValidationType.missing, |
| <ValidationMessage>[], |
| statusInfo: 'Unable to confirm if installed Windows version is 10 or greater', |
| ); |
| |
| void main() { |
| testWithoutContext('Successfully running windows version check on windows 10', |
| () async { |
| final WindowsVersionValidator windowsVersionValidator = |
| WindowsVersionValidator( |
| operatingSystemUtils: FakeValidOperatingSystemUtils()); |
| |
| final ValidationResult result = await windowsVersionValidator.validate(); |
| |
| expect(result.type, validWindows10ValidationResult.type, |
| reason: 'The ValidationResult type should be the same (installed)'); |
| expect(result.statusInfo, validWindows10ValidationResult.statusInfo, |
| reason: 'The ValidationResult statusInfo messages should be the same'); |
| }); |
| |
| testWithoutContext( |
| 'Successfully running windows version check on windows 10 for BR', |
| () async { |
| final WindowsVersionValidator windowsVersionValidator = |
| WindowsVersionValidator( |
| operatingSystemUtils: FakeValidOperatingSystemUtils( |
| 'Microsoft Windows [versão 10.0.22621.1105]')); |
| |
| final ValidationResult result = await windowsVersionValidator.validate(); |
| |
| expect(result.type, validWindows10ValidationResult.type, |
| reason: 'The ValidationResult type should be the same (installed)'); |
| expect(result.statusInfo, validWindows10ValidationResult.statusInfo, |
| reason: 'The ValidationResult statusInfo messages should be the same'); |
| }); |
| |
| testWithoutContext('Identifying a windows version before 10', () async { |
| final WindowsVersionValidator windowsVersionValidator = |
| WindowsVersionValidator( |
| operatingSystemUtils: FakeValidOperatingSystemUtils( |
| 'Microsoft Windows [Version 8.0.22621.1105]')); |
| |
| final ValidationResult result = await windowsVersionValidator.validate(); |
| |
| expect(result.type, invalidWindowsValidationResult.type, |
| reason: 'The ValidationResult type should be the same (missing)'); |
| }); |
| |
| testWithoutContext('Unit testing on a regex pattern validator', () async { |
| const String testStr = r''' |
| OS Version: 10.0.19044 N/A Build 19044 |
| OSz Version: 10.0.19044 N/A Build 19044 |
| OxS Version: 10.0.19044 N/A Build 19044 |
| OS Version: 10.19044 N/A Build 19044 |
| OS Version: 10.x.19044 N/A Build 19044 |
| OS Version: 10.0.19044 N/A Build 19044 |
| OS Version: .0.19044 N/A Build 19044 |
| OS 版本: 10.0.22621 暂缺 Build 22621 |
| '''; |
| |
| final RegExp regex = RegExp( |
| kWindowsOSVersionSemVerPattern, |
| multiLine: true, |
| ); |
| final Iterable<RegExpMatch> matches = regex.allMatches(testStr); |
| |
| expect(matches.length, 5, |
| reason: 'There should be only 5 matches for the pattern provided'); |
| }); |
| } |