mirror of
https://github.com/google/flatbuffers.git
synced 2026-07-06 01:16:54 +00:00
[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:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user