| // Copyright 2022 The Flutter Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. | |
| import 'package:devtools_shared/devtools_shared.dart'; | |
| import 'package:test/test.dart'; | |
| void main() { | |
| group('SemanticVersion', () { | |
| test('parse', () { | |
| expect( | |
| SemanticVersion.parse( | |
| '2.15.0-233.0.dev (dev) (Mon Oct 18 14:06:26 2021 -0700) on "ios_x64"', | |
| ).toString(), | |
| equals('2.15.0-233.0'), | |
| ); | |
| expect( | |
| SemanticVersion.parse('2.15.0-178.1.beta').toString(), | |
| equals('2.15.0-178.1'), | |
| ); | |
| expect( | |
| SemanticVersion.parse('2.6.0-12.0.pre.443').toString(), | |
| equals('2.6.0-12.0'), | |
| ); | |
| expect( | |
| SemanticVersion.parse('2.6.0-1.2.dev+build.metadata').toString(), | |
| equals('2.6.0-1.2'), | |
| ); | |
| expect( | |
| SemanticVersion.parse('2.6.0+build.metadata').toString(), | |
| equals('2.6.0'), | |
| ); | |
| expect( | |
| SemanticVersion.parse('3.33.0-1.0.pre-1156').toString(), | |
| equals('3.33.0-1.0'), | |
| ); | |
| }); | |
| test('downgrade', () { | |
| var version = SemanticVersion( | |
| major: 3, | |
| minor: 2, | |
| patch: 1, | |
| preReleaseMajor: 1, | |
| preReleaseMinor: 2, | |
| ); | |
| expect(version.downgrade().toString(), equals('3.2.1')); | |
| version = SemanticVersion(major: 3, minor: 2, patch: 1); | |
| expect(version.downgrade().toString(), equals('3.2.1')); | |
| expect( | |
| version.downgrade(downgradeMajor: true).toString(), | |
| equals('2.2.1'), | |
| ); | |
| expect( | |
| version.downgrade(downgradeMinor: true).toString(), | |
| equals('3.1.1'), | |
| ); | |
| expect( | |
| version.downgrade(downgradePatch: true).toString(), | |
| equals('3.2.0'), | |
| ); | |
| version = SemanticVersion(major: 3); | |
| expect( | |
| version | |
| .downgrade( | |
| downgradeMajor: true, | |
| downgradeMinor: true, | |
| downgradePatch: true, | |
| ) | |
| .toString(), | |
| equals('2.0.0'), | |
| ); | |
| }); | |
| test('isVersionSupported', () { | |
| final supportedVersion = SemanticVersion(major: 1, minor: 1, patch: 1); | |
| expect( | |
| SemanticVersion().isSupported(minSupportedVersion: SemanticVersion()), | |
| isTrue, | |
| ); | |
| expect( | |
| SemanticVersion( | |
| major: 1, | |
| minor: 1, | |
| patch: 2, | |
| ).isSupported(minSupportedVersion: supportedVersion), | |
| isTrue, | |
| ); | |
| expect( | |
| SemanticVersion( | |
| major: 1, | |
| minor: 2, | |
| patch: 1, | |
| ).isSupported(minSupportedVersion: supportedVersion), | |
| isTrue, | |
| ); | |
| expect( | |
| SemanticVersion( | |
| major: 2, | |
| minor: 1, | |
| patch: 1, | |
| ).isSupported(minSupportedVersion: supportedVersion), | |
| isTrue, | |
| ); | |
| expect( | |
| SemanticVersion(major: 2, minor: 1, patch: 1).isSupported( | |
| minSupportedVersion: SemanticVersion(major: 2, minor: 2, patch: 1), | |
| ), | |
| isFalse, | |
| ); | |
| }); | |
| test('compareTo', () { | |
| var version = SemanticVersion(major: 1, minor: 1, patch: 1); | |
| expect( | |
| version.compareTo(SemanticVersion(major: 1, minor: 1, patch: 2)), | |
| equals(-1), | |
| ); | |
| expect( | |
| version.compareTo(SemanticVersion(major: 1, minor: 2, patch: 1)), | |
| equals(-1), | |
| ); | |
| expect( | |
| version.compareTo(SemanticVersion(major: 2, minor: 1, patch: 1)), | |
| equals(-1), | |
| ); | |
| expect(version.compareTo(SemanticVersion(major: 1, minor: 1)), equals(1)); | |
| expect( | |
| version.compareTo(SemanticVersion(major: 1, minor: 1, patch: 1)), | |
| equals(0), | |
| ); | |
| expect( | |
| version.compareTo( | |
| SemanticVersion( | |
| major: 1, | |
| minor: 1, | |
| patch: 1, | |
| preReleaseMajor: 0, | |
| preReleaseMinor: 0, | |
| ), | |
| ), | |
| equals(0), | |
| ); | |
| expect( | |
| version.compareTo( | |
| SemanticVersion(major: 1, minor: 1, patch: 1, preReleaseMajor: 1), | |
| ), | |
| equals(1), | |
| ); | |
| version = SemanticVersion( | |
| major: 1, | |
| minor: 1, | |
| patch: 1, | |
| preReleaseMajor: 1, | |
| preReleaseMinor: 2, | |
| ); | |
| expect( | |
| version.compareTo( | |
| SemanticVersion(major: 1, minor: 1, patch: 1, preReleaseMajor: 1), | |
| ), | |
| equals(1), | |
| ); | |
| expect( | |
| version.compareTo( | |
| SemanticVersion( | |
| major: 1, | |
| minor: 1, | |
| patch: 1, | |
| preReleaseMajor: 2, | |
| preReleaseMinor: 1, | |
| ), | |
| ), | |
| equals(-1), | |
| ); | |
| }); | |
| test('toString', () { | |
| expect( | |
| SemanticVersion(major: 1, minor: 1, patch: 1).toString(), | |
| equals('1.1.1'), | |
| ); | |
| expect( | |
| SemanticVersion( | |
| major: 1, | |
| minor: 1, | |
| patch: 1, | |
| preReleaseMajor: 17, | |
| ).toString(), | |
| equals('1.1.1-17'), | |
| ); | |
| expect( | |
| SemanticVersion( | |
| major: 1, | |
| minor: 1, | |
| patch: 1, | |
| preReleaseMajor: 17, | |
| preReleaseMinor: 1, | |
| ).toString(), | |
| equals('1.1.1-17.1'), | |
| ); | |
| expect( | |
| SemanticVersion( | |
| major: 1, | |
| minor: 1, | |
| patch: 1, | |
| preReleaseMinor: 1, | |
| ).toString(), | |
| equals('1.1.1-0.1'), | |
| ); | |
| }); | |
| }); | |
| } |