Reverting back to string based version compare. Using customized comparator based ond Sparkle verison compare

This commit is contained in:
Michael Starke
2018-10-24 16:07:38 +02:00
parent 20ed81a5e7
commit 3cd8d07552
23 changed files with 495 additions and 470 deletions

View File

@@ -1,150 +0,0 @@
//
// MPTestPluginVersion.m
// MacPassTests
//
// Created by Michael Starke on 05.10.18.
// Copyright © 2018 HicknHack Software GmbH. All rights reserved.
//
#import <XCTest/XCTest.h>
#import "MPPluginVersion.h"
@interface MPTestPluginVersion : XCTestCase
@end
@implementation MPTestPluginVersion
- (void)testVersionExtraction {
MPPluginVersion *version = [[MPPluginVersion alloc] initWithVersionString:@"1."];
XCTAssertEqualObjects(@"1", version.mayorVersion);
XCTAssertEqualObjects(@"0", version.minorVersion);
XCTAssertEqualObjects(@"0", version.patchVersion);
XCTAssertEqualObjects(@"1.0.0", version.versionString);
version = [[MPPluginVersion alloc] initWithVersionString:@"0.5"];
XCTAssertEqualObjects(@"0", version.mayorVersion);
XCTAssertEqualObjects(@"5", version.minorVersion);
XCTAssertEqualObjects(@"0", version.patchVersion);
XCTAssertEqualObjects(@"0.5.0", version.versionString);
version = [[MPPluginVersion alloc] initWithVersionString:@".5"];
XCTAssertEqualObjects(@"0", version.mayorVersion);
XCTAssertEqualObjects(@"5", version.minorVersion);
XCTAssertEqualObjects(@"0", version.patchVersion);
XCTAssertEqualObjects(@"0.5.0", version.versionString);
version = [[MPPluginVersion alloc] initWithVersionString:@"5"];
XCTAssertEqualObjects(@"5", version.mayorVersion);
XCTAssertEqualObjects(@"0", version.minorVersion);
XCTAssertEqualObjects(@"0", version.patchVersion);
XCTAssertEqualObjects(@"5.0.0", version.versionString);
version = [[MPPluginVersion alloc] initWithVersionString:@".1."];
XCTAssertEqualObjects(@"0", version.mayorVersion);
XCTAssertEqualObjects(@"1", version.minorVersion);
XCTAssertEqualObjects(@"0", version.patchVersion);
XCTAssertEqualObjects(@"0.1.0", version.versionString);
version = [[MPPluginVersion alloc] initWithVersionString:@".1.1"];
XCTAssertEqualObjects(@"0", version.mayorVersion);
XCTAssertEqualObjects(@"1", version.minorVersion);
XCTAssertEqualObjects(@"1", version.patchVersion);
XCTAssertEqualObjects(@"0.1.1", version.versionString);
version = [[MPPluginVersion alloc] initWithVersionString:@"..1"];
XCTAssertEqualObjects(@"0", version.mayorVersion);
XCTAssertEqualObjects(@"0", version.minorVersion);
XCTAssertEqualObjects(@"1", version.patchVersion);
XCTAssertEqualObjects(@"0.0.1", version.versionString);
version = [[MPPluginVersion alloc] initWithVersionString:@"1.0.0"];
XCTAssertEqualObjects(@"1", version.mayorVersion);
XCTAssertEqualObjects(@"0", version.minorVersion);
XCTAssertEqualObjects(@"0", version.patchVersion);
XCTAssertEqualObjects(@"1.0.0", version.versionString);
version = [[MPPluginVersion alloc] initWithVersionString:@"0.1.0"];
XCTAssertEqualObjects(@"0", version.mayorVersion);
XCTAssertEqualObjects(@"1", version.minorVersion);
XCTAssertEqualObjects(@"0", version.patchVersion);
XCTAssertEqualObjects(@"0.1.0", version.versionString);
version = [[MPPluginVersion alloc] initWithVersionString:@"1.1.1"];
XCTAssertEqualObjects(@"1", version.mayorVersion);
XCTAssertEqualObjects(@"1", version.minorVersion);
XCTAssertEqualObjects(@"1", version.patchVersion);
XCTAssertEqualObjects(@"1.1.1", version.versionString);
version = [[MPPluginVersion alloc] initWithVersionString:@"0.0.5"];
XCTAssertEqualObjects(@"0", version.mayorVersion);
XCTAssertEqualObjects(@"0", version.minorVersion);
XCTAssertEqualObjects(@"5", version.patchVersion);
XCTAssertEqualObjects(@"0.0.5", version.versionString);
version = [[MPPluginVersion alloc] initWithVersionString:@"1.0.3"];
XCTAssertEqualObjects(@"1", version.mayorVersion);
XCTAssertEqualObjects(@"0", version.minorVersion);
XCTAssertEqualObjects(@"3", version.patchVersion);
XCTAssertEqualObjects(@"1.0.3", version.versionString);
version = [[MPPluginVersion alloc] initWithVersionString:@"0.1.4"];
XCTAssertEqualObjects(@"0", version.mayorVersion);
XCTAssertEqualObjects(@"1", version.minorVersion);
XCTAssertEqualObjects(@"4", version.patchVersion);
XCTAssertEqualObjects(@"0.1.4", version.versionString);
version = [[MPPluginVersion alloc] initWithVersionString:@"0.1.*"];
XCTAssertEqualObjects(@"0", version.mayorVersion);
XCTAssertEqualObjects(@"1", version.minorVersion);
XCTAssertEqualObjects(@"*", version.patchVersion);
XCTAssertEqualObjects(@"0.1.*", version.versionString);
version = [[MPPluginVersion alloc] initWithVersionString:@"*.1.0"];
XCTAssertEqualObjects(@"*", version.mayorVersion);
XCTAssertEqualObjects(@"*", version.minorVersion);
XCTAssertEqualObjects(@"*", version.patchVersion);
XCTAssertEqualObjects(@"*.*.*", version.versionString);
version = [[MPPluginVersion alloc] initWithVersionString:@"1.*.0"];
XCTAssertEqualObjects(@"1", version.mayorVersion);
XCTAssertEqualObjects(@"*", version.minorVersion);
XCTAssertEqualObjects(@"*", version.patchVersion);
XCTAssertEqualObjects(@"1.*.*", version.versionString);
}
- (void)testeVersionCompare {
NSArray *data = @[
@[ @"*", @"*", @(NSOrderedSame)],
@[ @"1.0.1", @"*", @(NSOrderedSame)],
@[ @"*", @"1.0.1", @(NSOrderedSame)],
@[ @"1.*", @"1.*", @(NSOrderedSame)],
@[ @"1.1.*", @"1.1.*", @(NSOrderedSame)],
@[ @"1.1.1", @"1.1.1", @(NSOrderedSame)],
@[ @"1.0.1", @"*", @(NSOrderedSame)],
@[ @"0.10.*", @"0.10.1", @(NSOrderedSame)],
@[ @"10.*.1", @"10.99.*", @(NSOrderedSame)],
@[ @"0.9.89", @"0.9.89", @(NSOrderedSame)],
@[ @"0.0.1", @"0.0.2", @(NSOrderedAscending)],
@[ @"1.10.10", @"1.12.10", @(NSOrderedAscending)],
@[ @"20.0.1", @"20.1.0", @(NSOrderedAscending)],
@[ @"1.1.1", @"2.*", @(NSOrderedAscending)],
@[ @"1.*", @"2.0.*", @(NSOrderedAscending)],
@[ @"2.1.1", @"2.0.0", @(NSOrderedDescending)],
@[ @"0.1.1", @"0.1.0", @(NSOrderedDescending)],
@[ @"1.2.*", @"1.1.*", @(NSOrderedDescending)],
@[ @"2.*", @"1.*", @(NSOrderedDescending)]
];
for(NSUInteger index = 0; index < data.count; index++) {
NSArray *set = data[index];
MPPluginVersion *versionA = [[MPPluginVersion alloc] initWithVersionString:set[0]];
MPPluginVersion *versionB = [[MPPluginVersion alloc] initWithVersionString:set[1]];
NSComparisonResult result = [set[2] integerValue];
XCTAssertEqual(result, [versionA compare:versionB]);
}
}
@end

View File

@@ -0,0 +1,84 @@
//
// MPTestPluginVersion.m
// MacPassTests
//
// Created by Michael Starke on 05.10.18.
// Copyright © 2018 HicknHack Software GmbH. All rights reserved.
//
#import <XCTest/XCTest.h>
#import "MPPluginVersionComparator.h"
@interface MPTestPluginVersion : XCTestCase
@end
@implementation MPTestPluginVersion
- (void)testSegmentClasification {
XCTAssertEqual([MPPluginVersionComparator typeOfCharacter:@"1"], kMPVersionCharacterTypeNumeric);
XCTAssertEqual([MPPluginVersionComparator typeOfCharacter:@"9"], kMPVersionCharacterTypeNumeric);
XCTAssertEqual([MPPluginVersionComparator typeOfCharacter:@"*"], kMPVersionCharacterTypeWildcard);
XCTAssertEqual([MPPluginVersionComparator typeOfCharacter:@"a"], kMPVersionCharacterTypeString);
XCTAssertEqual([MPPluginVersionComparator typeOfCharacter:@"x"], kMPVersionCharacterTypeString);
XCTAssertEqual([MPPluginVersionComparator typeOfCharacter:@"Ñ"], kMPVersionCharacterTypeString);
XCTAssertEqual([MPPluginVersionComparator typeOfCharacter:@"."], kMPVersionCharacterTypeSeparator);
XCTAssertEqual([MPPluginVersionComparator typeOfCharacter:@"-"], kMPVersionCharacterTypeSeparator);
XCTAssertEqual([MPPluginVersionComparator typeOfCharacter:@":"], kMPVersionCharacterTypeSeparator);
XCTAssertEqual([MPPluginVersionComparator typeOfCharacter:@"!"], kMPVersionCharacterTypeSeparator);
}
- (void)testVersionSplitting {
NSArray *data = @[
@"10.1.99", @[@"10", @".", @"1", @".", @"99"],
@"0.152", @[@"0", @".", @"152"],
@"1.1.1beta", @[@"1", @".", @"1", @".", @"1", @"beta"],
@"beta2.0", @[@"beta", @"2", @".", @"0"],
@"*.*.1", @[@"*", @".", @"*", @".", @"1"],
@"1-*", @[@"1", @"-", @"*"],
@"1-1-1", @[@"1", @"-", @"1", @"-", @"1"]
];
for(NSUInteger index = 0; index < data.count; index += 2 ) {
NSString *versionString = data[index];
NSArray *versionParts = data[index+1];
XCTAssertEqualObjects([MPPluginVersionComparator splitVersionString:versionString], versionParts);
}
}
- (void)testVersionCompare {
XCTAssertEqual(NSOrderedSame, [MPPluginVersionComparator compareVersion:@"" toVersion:@""]);
XCTAssertEqual(NSOrderedSame, [MPPluginVersionComparator compareVersion:@"*" toVersion:@"*"]);
XCTAssertEqual(NSOrderedSame, [MPPluginVersionComparator compareVersion:@"1.0.1" toVersion:@"*"]);
XCTAssertEqual(NSOrderedSame, [MPPluginVersionComparator compareVersion:@"*" toVersion:@"1.0.1"]);
XCTAssertEqual(NSOrderedSame, [MPPluginVersionComparator compareVersion:@"1.*" toVersion:@"1.*"]);
XCTAssertEqual(NSOrderedSame, [MPPluginVersionComparator compareVersion:@"1.1.*" toVersion:@"1.1.*"]);
XCTAssertEqual(NSOrderedSame, [MPPluginVersionComparator compareVersion:@"1.1.1" toVersion:@"1.1.1"]);
XCTAssertEqual(NSOrderedSame, [MPPluginVersionComparator compareVersion:@"1.0.1" toVersion:@"*"]);
XCTAssertEqual(NSOrderedSame, [MPPluginVersionComparator compareVersion:@"0.10.*" toVersion:@"0.10.1"]);
XCTAssertEqual(NSOrderedSame, [MPPluginVersionComparator compareVersion:@"10.*.1" toVersion:@"10.99.*"]);
XCTAssertEqual(NSOrderedSame, [MPPluginVersionComparator compareVersion:@"0.9.89" toVersion:@"0.9.89"]);
XCTAssertEqual(NSOrderedSame, [MPPluginVersionComparator compareVersion:@"1.*" toVersion:@"1.*.1"]);
XCTAssertEqual(NSOrderedSame, [MPPluginVersionComparator compareVersion:@"1.*.2" toVersion:@"1.*"]);
XCTAssertEqual(NSOrderedSame, [MPPluginVersionComparator compareVersion:@"1.0" toVersion:@"1."]);
XCTAssertEqual(NSOrderedSame, [MPPluginVersionComparator compareVersion:@"1.0" toVersion:@"1.0.0"]);
XCTAssertEqual(NSOrderedSame, [MPPluginVersionComparator compareVersion:@"1.0" toVersion:@"1.0.0.0.0.0.0.0"]);
XCTAssertEqual(NSOrderedSame, [MPPluginVersionComparator compareVersion:@"1.0.*" toVersion:@"1.0"]);
XCTAssertEqual(NSOrderedAscending, [MPPluginVersionComparator compareVersion:@"0.0.1" toVersion:@"0.0.2"]);
XCTAssertEqual(NSOrderedAscending, [MPPluginVersionComparator compareVersion:@"0.0.1b" toVersion:@"0.0.1"]);
XCTAssertEqual(NSOrderedAscending, [MPPluginVersionComparator compareVersion:@"1.10.10" toVersion:@"1.12.10"]);
XCTAssertEqual(NSOrderedAscending, [MPPluginVersionComparator compareVersion:@"20.0.1" toVersion:@"20.1.0"]);
XCTAssertEqual(NSOrderedAscending, [MPPluginVersionComparator compareVersion:@"1.1.1" toVersion:@"2.*"]);
XCTAssertEqual(NSOrderedAscending, [MPPluginVersionComparator compareVersion:@"1.*" toVersion:@"2.0.*"]);
XCTAssertEqual(NSOrderedDescending, [MPPluginVersionComparator compareVersion:@"2.1.1" toVersion:@"2.0.0"]);
XCTAssertEqual(NSOrderedDescending, [MPPluginVersionComparator compareVersion:@"2.0.0" toVersion:@"2.0.0b"]);
XCTAssertEqual(NSOrderedDescending, [MPPluginVersionComparator compareVersion:@"2.0.0" toVersion:@"2.0.0.0.0.beta"]);
XCTAssertEqual(NSOrderedDescending, [MPPluginVersionComparator compareVersion:@"0.1.1" toVersion:@"0.1.0"]);
XCTAssertEqual(NSOrderedDescending, [MPPluginVersionComparator compareVersion:@"1.2.*" toVersion:@"1.1.*"]);
XCTAssertEqual(NSOrderedDescending, [MPPluginVersionComparator compareVersion:@"2.*" toVersion:@"1.*"]);
}
@end