| // RUN: %target-resilience-test |
| // REQUIRES: executable_test |
| |
| import StdlibUnittest |
| import struct_change_size |
| |
| |
| var ClassChangeSizeTest = TestSuite("ClassChangeSize") |
| |
| func increment(_ c: inout ChangeSize) { |
| c.version += 1 |
| } |
| |
| ClassChangeSizeTest.test("ChangeFieldOffsetsOfFixedLayout") { |
| var t = ChangeFieldOffsetsOfFixedLayout(major: 7, minor: 5, patch: 3) |
| |
| do { |
| expectEqual(t.getVersion(), "7.5.3") |
| } |
| |
| do { |
| t.minor.version = 1 |
| t.patch.version = 2 |
| expectEqual(t.getVersion(), "7.1.2") |
| } |
| |
| do { |
| increment(&t.patch) |
| expectEqual(t.getVersion(), "7.1.3") |
| } |
| } |
| |
| struct ChangeFieldOffsetsOfMyFixedLayout { |
| init(major: Int32, minor: Int32, patch: Int32) { |
| self.major = ChangeSize(version: major) |
| self.minor = ChangeSize(version: minor) |
| self.patch = ChangeSize(version: patch) |
| } |
| |
| var major: ChangeSize |
| var minor: ChangeSize |
| var patch: ChangeSize |
| |
| func getVersion() -> String { |
| return "\(major.version).\(minor.version).\(patch.version)" |
| } |
| } |
| |
| ClassChangeSizeTest.test("ChangeFieldOffsetsOfMyFixedLayout") { |
| var t = ChangeFieldOffsetsOfMyFixedLayout(major: 9, minor: 2, patch: 1) |
| |
| do { |
| expectEqual(t.getVersion(), "9.2.1") |
| } |
| |
| do { |
| t.major.version = 7 |
| t.minor.version = 6 |
| t.patch.version = 1 |
| expectEqual(t.getVersion(), "7.6.1") |
| } |
| |
| do { |
| increment(&t.patch) |
| expectEqual(t.getVersion(), "7.6.2") |
| } |
| } |
| |
| runAllTests() |