Skip to content

Commit cdf9cc5

Browse files
More tests for scalars constructor. (#9694)
Summary: #8366 Reviewed By: bsoyluoglu Differential Revision: D71930535 Co-authored-by: Anthony Shoumikhin <[email protected]>
1 parent d2eeff4 commit cdf9cc5

File tree

3 files changed

+159
-14
lines changed

3 files changed

+159
-14
lines changed

extension/apple/ExecuTorch/__tests__/ModuleTest.swift

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -59,17 +59,9 @@ class ModuleTest: XCTestCase {
5959
return
6060
}
6161
let module = Module(filePath: modelPath)
62-
var inputData: [Float] = [1.0]
63-
let inputTensor = inputData.withUnsafeMutableBytes {
64-
Tensor(bytesNoCopy: $0.baseAddress!, shape:[1], dataType: .float)
65-
}
66-
let inputs = [inputTensor, inputTensor]
62+
let inputs = [Tensor([1], dataType: .float), Tensor([1], dataType: .float)]
6763
var outputs: [Value]?
6864
XCTAssertNoThrow(outputs = try module.forward(inputs))
69-
var outputData: [Float] = [2.0]
70-
let outputTensor = outputData.withUnsafeMutableBytes {
71-
Tensor(bytesNoCopy: $0.baseAddress!, shape:[1], dataType: .float, shapeDynamism: .static)
72-
}
73-
XCTAssertEqual(outputs?[0].tensor, outputTensor)
65+
XCTAssertEqual(outputs?[0].tensor, Tensor([2], dataType: .float, shapeDynamism: .static))
7466
}
7567
}

extension/apple/ExecuTorch/__tests__/TensorTest.swift

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,71 @@ class TensorTest: XCTestCase {
224224
XCTAssertFalse(tensor4.isEqual(tensor2.copy()))
225225
}
226226

227+
func testInitScalarsUInt8() {
228+
let data: [UInt8] = [1, 2, 3, 4, 5, 6]
229+
let tensor = Tensor(data.map(NSNumber.init), dataType: .byte)
230+
XCTAssertEqual(tensor.dataType, .byte)
231+
XCTAssertEqual(tensor.shape, [6])
232+
XCTAssertEqual(tensor.strides, [1])
233+
XCTAssertEqual(tensor.dimensionOrder, [0])
234+
XCTAssertEqual(tensor.count, 6)
235+
tensor.bytes { pointer, count, dataType in
236+
XCTAssertEqual(Array(UnsafeBufferPointer(start: pointer.assumingMemoryBound(to: UInt8.self), count: count)), data)
237+
}
238+
}
239+
240+
func testInitScalarsInt8() {
241+
let data: [Int8] = [1, 2, 3, 4, 5, 6]
242+
let tensor = Tensor(data.map(NSNumber.init), dataType: .char)
243+
XCTAssertEqual(tensor.dataType, .char)
244+
XCTAssertEqual(tensor.shape, [6])
245+
XCTAssertEqual(tensor.strides, [1])
246+
XCTAssertEqual(tensor.dimensionOrder, [0])
247+
XCTAssertEqual(tensor.count, 6)
248+
tensor.bytes { pointer, count, dataType in
249+
XCTAssertEqual(Array(UnsafeBufferPointer(start: pointer.assumingMemoryBound(to: Int8.self), count: count)), data)
250+
}
251+
}
252+
253+
func testInitScalarsInt16() {
254+
let data: [Int16] = [1, 2, 3, 4, 5, 6]
255+
let tensor = Tensor(data.map(NSNumber.init))
256+
XCTAssertEqual(tensor.dataType, .short)
257+
XCTAssertEqual(tensor.shape, [6])
258+
XCTAssertEqual(tensor.strides, [1])
259+
XCTAssertEqual(tensor.dimensionOrder, [0])
260+
XCTAssertEqual(tensor.count, 6)
261+
tensor.bytes { pointer, count, dataType in
262+
XCTAssertEqual(Array(UnsafeBufferPointer(start: pointer.assumingMemoryBound(to: Int16.self), count: count)), data)
263+
}
264+
}
265+
266+
func testInitScalarsInt32() {
267+
let data: [Int32] = [1, 2, 3, 4, 5, 6]
268+
let tensor = Tensor(data.map(NSNumber.init))
269+
XCTAssertEqual(tensor.dataType, .int)
270+
XCTAssertEqual(tensor.shape, [6])
271+
XCTAssertEqual(tensor.strides, [1])
272+
XCTAssertEqual(tensor.dimensionOrder, [0])
273+
XCTAssertEqual(tensor.count, 6)
274+
tensor.bytes { pointer, count, dataType in
275+
XCTAssertEqual(Array(UnsafeBufferPointer(start: pointer.assumingMemoryBound(to: Int32.self), count: count)), data)
276+
}
277+
}
278+
279+
func testInitScalarsInt64() {
280+
let data: [Int64] = [1, 2, 3, 4, 5, 6]
281+
let tensor = Tensor(data.map(NSNumber.init))
282+
XCTAssertEqual(tensor.dataType, .long)
283+
XCTAssertEqual(tensor.shape, [6])
284+
XCTAssertEqual(tensor.strides, [1])
285+
XCTAssertEqual(tensor.dimensionOrder, [0])
286+
XCTAssertEqual(tensor.count, 6)
287+
tensor.bytes { pointer, count, dataType in
288+
XCTAssertEqual(Array(UnsafeBufferPointer(start: pointer.assumingMemoryBound(to: Int64.self), count: count)), data)
289+
}
290+
}
291+
227292
func testInitScalarsFloat() {
228293
let data: [Float] = [1, 2, 3, 4, 5, 6]
229294
let tensor = Tensor(data.map(NSNumber.init))
@@ -236,4 +301,95 @@ class TensorTest: XCTestCase {
236301
XCTAssertEqual(Array(UnsafeBufferPointer(start: pointer.assumingMemoryBound(to: Float.self), count: count)), data)
237302
}
238303
}
304+
305+
func testInitScalarsDouble() {
306+
let data: [Double] = [1, 2, 3, 4, 5, 6]
307+
let tensor = Tensor(data.map(NSNumber.init))
308+
XCTAssertEqual(tensor.dataType, .double)
309+
XCTAssertEqual(tensor.shape, [6])
310+
XCTAssertEqual(tensor.strides, [1])
311+
XCTAssertEqual(tensor.dimensionOrder, [0])
312+
XCTAssertEqual(tensor.count, 6)
313+
tensor.bytes { pointer, count, dataType in
314+
XCTAssertEqual(Array(UnsafeBufferPointer(start: pointer.assumingMemoryBound(to: Double.self), count: count)), data)
315+
}
316+
}
317+
318+
func testInitScalarsBool() {
319+
let data: [Bool] = [true, false, true, false, true, false]
320+
let tensor = Tensor(data.map(NSNumber.init), dataType: .bool)
321+
XCTAssertEqual(tensor.dataType, .bool)
322+
XCTAssertEqual(tensor.shape, [6])
323+
XCTAssertEqual(tensor.strides, [1])
324+
XCTAssertEqual(tensor.dimensionOrder, [0])
325+
XCTAssertEqual(tensor.count, 6)
326+
tensor.bytes { pointer, count, dataType in
327+
XCTAssertEqual(Array(UnsafeBufferPointer(start: pointer.assumingMemoryBound(to: Bool.self), count: count)), data)
328+
}
329+
}
330+
331+
func testInitScalarsUInt16() {
332+
let data: [UInt16] = [1, 2, 3, 4, 5, 6]
333+
let tensor = Tensor(data.map(NSNumber.init), dataType: .uInt16)
334+
XCTAssertEqual(tensor.dataType, .uInt16)
335+
XCTAssertEqual(tensor.shape, [6])
336+
XCTAssertEqual(tensor.strides, [1])
337+
XCTAssertEqual(tensor.dimensionOrder, [0])
338+
XCTAssertEqual(tensor.count, 6)
339+
tensor.bytes { pointer, count, dataType in
340+
XCTAssertEqual(Array(UnsafeBufferPointer(start: pointer.assumingMemoryBound(to: UInt16.self), count: count)), data)
341+
}
342+
}
343+
344+
func testInitScalarsUInt32() {
345+
let data: [UInt32] = [1, 2, 3, 4, 5, 6]
346+
let tensor = Tensor(data.map(NSNumber.init), dataType: .uInt32)
347+
XCTAssertEqual(tensor.dataType, .uInt32)
348+
XCTAssertEqual(tensor.shape, [6])
349+
XCTAssertEqual(tensor.strides, [1])
350+
XCTAssertEqual(tensor.dimensionOrder, [0])
351+
XCTAssertEqual(tensor.count, 6)
352+
tensor.bytes { pointer, count, dataType in
353+
XCTAssertEqual(Array(UnsafeBufferPointer(start: pointer.assumingMemoryBound(to: UInt32.self), count: count)), data)
354+
}
355+
}
356+
357+
func testInitScalarsUInt64() {
358+
let data: [UInt64] = [1, 2, 3, 4, 5, 6]
359+
let tensor = Tensor(data.map(NSNumber.init), dataType: .uInt64)
360+
XCTAssertEqual(tensor.dataType, .uInt64)
361+
XCTAssertEqual(tensor.shape, [6])
362+
XCTAssertEqual(tensor.strides, [1])
363+
XCTAssertEqual(tensor.dimensionOrder, [0])
364+
XCTAssertEqual(tensor.count, 6)
365+
tensor.bytes { pointer, count, dataType in
366+
XCTAssertEqual(Array(UnsafeBufferPointer(start: pointer.assumingMemoryBound(to: UInt64.self), count: count)), data)
367+
}
368+
}
369+
370+
func testInitScalarsInt() {
371+
let data: [Int] = [1, 2, 3, 4, 5, 6]
372+
let tensor = Tensor(data.map(NSNumber.init), dataType: .long)
373+
XCTAssertEqual(tensor.dataType, .long)
374+
XCTAssertEqual(tensor.shape, [6])
375+
XCTAssertEqual(tensor.strides, [1])
376+
XCTAssertEqual(tensor.dimensionOrder, [0])
377+
XCTAssertEqual(tensor.count, 6)
378+
tensor.bytes { pointer, count, dataType in
379+
XCTAssertEqual(Array(UnsafeBufferPointer(start: pointer.assumingMemoryBound(to: Int.self), count: count)), data)
380+
}
381+
}
382+
383+
func testInitScalarsUInt() {
384+
let data: [UInt] = [1, 2, 3, 4, 5, 6]
385+
let tensor = Tensor(data.map(NSNumber.init), dataType: .uInt64)
386+
XCTAssertEqual(tensor.dataType, .uInt64)
387+
XCTAssertEqual(tensor.shape, [6])
388+
XCTAssertEqual(tensor.strides, [1])
389+
XCTAssertEqual(tensor.dimensionOrder, [0])
390+
XCTAssertEqual(tensor.count, 6)
391+
tensor.bytes { pointer, count, dataType in
392+
XCTAssertEqual(Array(UnsafeBufferPointer(start: pointer.assumingMemoryBound(to: UInt.self), count: count)), data)
393+
}
394+
}
239395
}

extension/apple/ExecuTorch/__tests__/ValueTest.swift

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,7 @@ class ValueTest: XCTestCase {
1717
}
1818

1919
func testTensor() {
20-
var data: [Float] = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
21-
let tensor = data.withUnsafeMutableBytes {
22-
Tensor(bytesNoCopy: $0.baseAddress!, shape: [2, 3], dataType: .float)
23-
}
20+
let tensor = Tensor([1.0, 2.0, 3.0, 4.0, 5.0, 6.0])
2421
let value = Value(tensor)
2522
XCTAssertTrue(value.isTensor)
2623
XCTAssertEqual(value.tensor, tensor)

0 commit comments

Comments
 (0)