[Swift] Migrate to use Swift Testing (#9076)

* Migrating from Xctests to swift testing

This migrates to the new Swift testing framework,
which would allow us to always use the latest tech
from swift moving forward.

* Updates flag to make sure that Wasm testing works
This commit is contained in:
mustiikhalil
2026-05-08 03:49:41 +02:00
committed by GitHub
parent e6bbb3d22e
commit 392165432a
21 changed files with 1054 additions and 883 deletions

View File

@@ -14,12 +14,14 @@
* limitations under the License.
*/
import XCTest
import Foundation
import Testing
@testable import FlatBuffers
final class FlatBuffersUnionTests: XCTestCase {
struct FlatBuffersUnionTests {
@Test
func testCreateMonstor() {
var b = FlatBufferBuilder(initialSize: 20)
@@ -36,8 +38,8 @@ final class FlatBuffersUnionTests: XCTestCase {
b.finish(offset: root)
let buffer = b.sizedByteArray
// swiftformat:disable all
XCTAssertEqual(
buffer,
#expect(
buffer ==
[
16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 8, 0, 7, 0, 12, 0, 10, 0, 0, 0, 0, 0, 0, 1, 8, 0, 0, 0, 20,
0, 0, 0, 1, 0, 0, 0, 12, 0, 0, 0, 8, 0, 12, 0, 8, 0, 6, 0, 8, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0,
@@ -45,15 +47,16 @@ final class FlatBuffersUnionTests: XCTestCase {
])
// swiftformat:enable all
let monster = LocalMonster.getRootAsMonster(bb: ByteBuffer(bytes: buffer))
XCTAssertEqual(monster.weapon(at: 0)?.dmg, dmg)
XCTAssertEqual(monster.weapon(at: 0)?.name, str)
XCTAssertEqual(monster.weapon(at: 0)?.nameVector, [65, 120, 101])
#expect(monster.weapon(at: 0)?.dmg == dmg)
#expect(monster.weapon(at: 0)?.name == str)
#expect(monster.weapon(at: 0)?.nameVector == [65, 120, 101])
let p: Weapon? = monster.equiped()
XCTAssertEqual(p?.dmg, dmg)
XCTAssertEqual(p?.name, str)
XCTAssertEqual(p?.nameVector, [65, 120, 101])
#expect(p?.dmg == dmg)
#expect(p?.name == str)
#expect(p?.nameVector == [65, 120, 101])
}
@Test
func testEndTableFinish() {
var builder = FlatBufferBuilder(initialSize: 20)
let sword = builder.create(string: "Sword")
@@ -84,8 +87,8 @@ final class FlatBuffersUnionTests: XCTestCase {
path: path)
builder.finish(offset: orc)
// swiftformat:disable all
XCTAssertEqual(
builder.sizedByteArray,
#expect(
builder.sizedByteArray ==
[
32, 0, 0, 0, 0, 0, 26, 0, 48, 0, 36, 0, 0, 0, 34, 0, 28, 0, 0, 0, 24, 0, 23, 0, 16, 0, 15,
0, 8, 0, 4, 0, 26, 0, 0, 0, 44, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 1, 60, 0, 0, 0, 0, 0, 0, 0,
@@ -99,6 +102,7 @@ final class FlatBuffersUnionTests: XCTestCase {
// swiftformat:enable all
}
@Test
func testEnumVector() {
let vectorOfEnums: [ColorsNameSpace.RGB] = [.blue, .green]
@@ -109,8 +113,8 @@ final class FlatBuffersUnionTests: XCTestCase {
let end = ColorsNameSpace.Monster.endMonster(&builder, start: start)
builder.finish(offset: end)
// swiftformat:disable all
XCTAssertEqual(
builder.sizedByteArray,
#expect(
builder.sizedByteArray ==
[
12, 0, 0, 0, 0, 0, 6, 0, 8, 0, 4, 0, 6, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, 0,
0, 0,
@@ -118,12 +122,13 @@ final class FlatBuffersUnionTests: XCTestCase {
// swiftformat:enable all
let monster = ColorsNameSpace.Monster
.getRootAsMonster(bb: builder.sizedBuffer)
XCTAssertEqual(monster.colorsCount, 2)
#expect(monster.colorsCount == 2)
let colors = monster.colors
XCTAssertEqual(colors[0], .blue)
XCTAssertEqual(colors[1], .green)
#expect(colors[0] == .blue)
#expect(colors[1] == .green)
}
@Test
func testUnionVector() {
var fb = FlatBufferBuilder()
@@ -149,30 +154,30 @@ final class FlatBuffersUnionTests: XCTestCase {
var buffer = fb.sizedBuffer
let movie: Movie = getRoot(byteBuffer: &buffer)
XCTAssertEqual(movie.charactersType.count, characterType.count)
XCTAssertEqual(movie.characters.count, characters.count)
#expect(movie.charactersType.count == characterType.count)
#expect(movie.characters.count == characters.count)
let bufferCharactersType = movie.charactersType
for (index, element) in bufferCharactersType.enumerated() {
XCTAssertEqual(element, characterType[index])
#expect(element == characterType[index])
}
XCTAssertEqual(
movie.characters(at: 0, type: BookReader_Mutable.self)?.booksRead,
7)
XCTAssertEqual(
movie.characters(at: 1, type: Attacker.self)?.swordAttackDamage,
swordDmg)
XCTAssertEqual(
movie.characters(at: 2, type: BookReader_Mutable.self)?.booksRead,
2)
#expect(
movie.characters(at: 0, type: BookReader_Mutable.self)?.booksRead ==
7)
#expect(
movie.characters(at: 1, type: Attacker.self)?.swordAttackDamage ==
swordDmg)
#expect(
movie.characters(at: 2, type: BookReader_Mutable.self)?.booksRead ==
2)
var objc: MovieT? = movie.unpack()
XCTAssertEqual(
movie.charactersType.count, objc?.characters.count ?? 0)
XCTAssertEqual(
movie.characters(at: 0, type: BookReader_Mutable.self)?.booksRead,
(objc?.characters[0]?.value as? BookReader)?.booksRead)
#expect(
movie.charactersType.count == objc?.characters.count ?? 0)
#expect(
movie.characters(at: 0, type: BookReader_Mutable.self)?.booksRead ==
(objc?.characters[0]?.value as? BookReader)?.booksRead)
fb.clear()
let newMovie = Movie.pack(&fb, obj: &objc)
fb.finish(offset: newMovie)
@@ -180,17 +185,18 @@ final class FlatBuffersUnionTests: XCTestCase {
var _buffer = fb.sizedBuffer
let packedMovie: Movie = getRoot(byteBuffer: &_buffer)
XCTAssertEqual(
packedMovie.characters(at: 0, type: BookReader_Mutable.self)?.booksRead,
movie.characters(at: 0, type: BookReader_Mutable.self)?.booksRead)
XCTAssertEqual(
packedMovie.characters(at: 1, type: Attacker.self)?.swordAttackDamage,
movie.characters(at: 1, type: Attacker.self)?.swordAttackDamage)
XCTAssertEqual(
packedMovie.characters(at: 2, type: BookReader_Mutable.self)?.booksRead,
movie.characters(at: 2, type: BookReader_Mutable.self)?.booksRead)
#expect(
packedMovie.characters(at: 0, type: BookReader_Mutable.self)?.booksRead ==
movie.characters(at: 0, type: BookReader_Mutable.self)?.booksRead)
#expect(
packedMovie.characters(at: 1, type: Attacker.self)?.swordAttackDamage ==
movie.characters(at: 1, type: Attacker.self)?.swordAttackDamage)
#expect(
packedMovie.characters(at: 2, type: BookReader_Mutable.self)?.booksRead ==
movie.characters(at: 2, type: BookReader_Mutable.self)?.booksRead)
}
@Test
func testStringUnion() {
let string = "Awesome \\\\t\t\nstring!"
var fb = FlatBufferBuilder()
@@ -214,30 +220,31 @@ final class FlatBuffersUnionTests: XCTestCase {
var buffer = fb.sizedBuffer
let movie: Movie = getRoot(byteBuffer: &buffer)
XCTAssertEqual(movie.mainCharacter(type: String.self), string)
XCTAssertEqual(
movie.characters(at: 0, type: BookReader_Mutable.self)?.booksRead,
7)
XCTAssertEqual(movie.characters(at: 1, type: String.self), string)
#expect(movie.mainCharacter(type: String.self) == string)
#expect(
movie.characters(at: 0, type: BookReader_Mutable.self)?.booksRead ==
7)
#expect(movie.characters(at: 1, type: String.self) == string)
var objc: MovieT? = movie.unpack()
XCTAssertEqual(objc?.mainCharacter?.value as? String, string)
XCTAssertEqual((objc?.characters[0]?.value as? BookReader)?.booksRead, 7)
XCTAssertEqual(objc?.characters[1]?.value as? String, string)
#expect(objc?.mainCharacter?.value as? String == string)
#expect((objc?.characters[0]?.value as? BookReader)?.booksRead == 7)
#expect(objc?.characters[1]?.value as? String == string)
fb.clear()
let newMovie = Movie.pack(&fb, obj: &objc)
fb.finish(offset: newMovie)
var _buffer = fb.sizedBuffer
let packedMovie: Movie = getRoot(byteBuffer: &_buffer)
XCTAssertEqual(packedMovie.mainCharacter(type: String.self), string)
XCTAssertEqual(
packedMovie.characters(at: 0, type: BookReader_Mutable.self)?.booksRead,
7)
XCTAssertEqual(packedMovie.characters(at: 1, type: String.self), string)
#expect(packedMovie.mainCharacter(type: String.self) == string)
#expect(
packedMovie.characters(at: 0, type: BookReader_Mutable.self)?.booksRead ==
7)
#expect(packedMovie.characters(at: 1, type: String.self) == string)
}
func testEncoding() {
@Test
func testEncoding() throws {
let string = "Awesome \\\\t\t\nstring!"
var fb = FlatBufferBuilder()
@@ -265,16 +272,12 @@ final class FlatBuffersUnionTests: XCTestCase {
Movie.finish(&fb, end: end)
var sizedBuffer = fb.sizedBuffer
do {
let reader: Movie = try getCheckedRoot(byteBuffer: &sizedBuffer)
let encoder = JSONEncoder()
encoder.keyEncodingStrategy = .convertToSnakeCase
encoder.outputFormatting = [.sortedKeys]
let data = try encoder.encode(reader)
XCTAssertEqual(String(data: data, encoding: .utf8), jsonData)
} catch {
XCTFail(error.localizedDescription)
}
let reader: Movie = try getCheckedRoot(byteBuffer: &sizedBuffer)
let encoder = JSONEncoder()
encoder.keyEncodingStrategy = .convertToSnakeCase
encoder.outputFormatting = [.sortedKeys]
let data = try encoder.encode(reader)
#expect(String(data: data, encoding: .utf8) == jsonData)
}
var jsonData: String {