File: testtoolfpcversion.pas

package info (click to toggle)
castle-game-engine 7.0~alpha.3%2Bdfsg2-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 969,476 kB
  • sloc: pascal: 911,523; javascript: 28,186; cpp: 14,157; xml: 9,939; ansic: 9,229; java: 3,653; objc: 2,737; sh: 1,214; makefile: 657; php: 65; lisp: 21; ruby: 8
file content (111 lines) | stat: -rw-r--r-- 3,429 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
// -*- compile-command: "./test_single_testcase.sh TTestToolFpcVersion" -*-
{
  Copyright 2015-2021 Michalis Kamburelis.

  This file is part of "Castle Game Engine".

  "Castle Game Engine" is free software; see the file COPYING.txt,
  included in this distribution, for details about the copyright.

  "Castle Game Engine" is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

  ----------------------------------------------------------------------------
}

unit TestToolFpcVersion;

interface

uses
  ToolFpcVersion,
  CastleTestCase, TestRegistry;

type
  TTestToolFpcVersion = class(TCastleTestCase)
    procedure TestVersionParsing;
  end;

implementation

uses SysUtils,
  CastleFilesUtils, CastleUriUtils;

type
  { Descendant of TToolVersion, just to expose protected ParseVersion.
    We actually don't need to make it public here, it's enough that TTestVersionParsing
    is in the same unit as TTestToolFpcVersion.TestVersionParsing that uses it. }
  TTestVersionParsing = class(TToolVersion)
  // public
  //   procedure ParseVersion(const S: String);
  end;

// procedure procedure TTestVersionParsing.ParseVersion(const S: String);
// begin
//   inherited;
// end;

procedure TTestToolFpcVersion.TestVersionParsing;
{ See https://github.com/castle-engine/castle-engine/pull/356 for various example
  version numbers }
var
  VersionParsing: TTestVersionParsing;

  procedure TestParsing(const Ver: String);
  begin
    VersionParsing.ParseVersion(Ver);
    AssertEquals(Ver, VersionParsing.ToString);
  end;

begin
  VersionParsing := TTestVersionParsing.Create;
  try
    TestParsing('1.6.4');
    AssertEquals(1, VersionParsing.Major);
    AssertEquals(6, VersionParsing.Minor);
    AssertEquals(4, VersionParsing.Release);
    AssertEquals('', VersionParsing.ReleaseRemark);

    TestParsing('2.2.0');
    AssertEquals(2, VersionParsing.Major);
    AssertEquals(2, VersionParsing.Minor);
    AssertEquals(0, VersionParsing.Release);
    AssertEquals('', VersionParsing.ReleaseRemark);

    TestParsing('0.9.30.2');
    AssertEquals(0, VersionParsing.Major);
    AssertEquals(9, VersionParsing.Minor);
    AssertEquals(30, VersionParsing.Release);
    AssertEquals('.2', VersionParsing.ReleaseRemark);

    // Ignore this failure -- we read Major and Minor OK, but ReleaseRemark is not correct in this case
    // TestParsing('1.0RC2');
    // AssertEquals(1, VersionParsing.Major);
    // AssertEquals(0, VersionParsing.Minor);
    // AssertEquals(0, VersionParsing.Release);
    // AssertEquals('RC2', VersionParsing.ReleaseRemark);

    TestParsing('2.2.0RC1');
    AssertEquals(2, VersionParsing.Major);
    AssertEquals(2, VersionParsing.Minor);
    AssertEquals(0, VersionParsing.Release);
    AssertEquals('RC1', VersionParsing.ReleaseRemark);

    TestParsing('2.2.0RC2');
    AssertEquals(2, VersionParsing.Major);
    AssertEquals(2, VersionParsing.Minor);
    AssertEquals(0, VersionParsing.Release);
    AssertEquals('RC2', VersionParsing.ReleaseRemark);

    TestParsing('123.456.789');
    AssertEquals(123, VersionParsing.Major);
    AssertEquals(456, VersionParsing.Minor);
    AssertEquals(789, VersionParsing.Release);
    AssertEquals('', VersionParsing.ReleaseRemark);
  finally FreeAndNil(VersionParsing) end;
end;

initialization
  RegisterTest(TTestToolFpcVersion);
end.