https://hal.archives-ouvertes.fr/hal-02306552
Tip revision: 0d4d12a35637ad1529b935c6104fa7589fdcae5e authored by Software Heritage on 01 January 2019, 00:00:00 UTC
hal: Deposit 334 in collection hal
hal: Deposit 334 in collection hal
Tip revision: 0d4d12a
MotusLabToolUnitTests.swift
//
// MotusLabToolUnitTests.swift
// MotusLabToolUnitTests
//
// Created by Pierre Couprie on 15/09/2019.
// Copyright © 2019 Pierre Couprie. All rights reserved.
//
import XCTest
@testable import MotusLabTool
class MotusLabToolUnitTests: XCTestCase {
override func setUp() {
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testMIDIValueCorrection() {
var tempValue: Int = 0
for n in 0..<127 {
let result = MIDIValueCorrection(n, type: 1)
XCTAssertTrue(result > -1 && result < 128, "result: \(result)")
XCTAssertTrue(result >= tempValue, "result: \(result) tempValue: \(tempValue)")
tempValue = result
}
}
func testFloatToTime() {
var value: Float = 67.857
var result = value.floatToTime()
XCTAssertEqual(result, "01:07.857")
value = 0
result = value.floatToTime()
XCTAssertEqual(result, "00:00.000")
value = Float.nan
result = value.floatToTime()
XCTAssertEqual(result, "00:00.000")
}
func testFloatToTimeSeconds() {
var value: Float = 67.857
var result = value.floatToTimeSeconds()
XCTAssertEqual(result, "01:07")
value = 0
result = value.floatToTimeSeconds()
XCTAssertEqual(result, "00:00")
value = Float.nan
result = value.floatToTimeSeconds()
XCTAssertEqual(result, "00:00")
}
func testStringToTime() {
var time = "01:47:981"
var result = time.stringToTime()
XCTAssertEqual(result, 107)
time = "01:4"
result = time.stringToTime()
XCTAssertEqual(result, 64)
time = "8.567"
result = time.stringToTime()
XCTAssertEqual(result, 8.567)
time = "01:47.981"
result = time.stringToTime()
XCTAssertEqual(result, 107.981)
}
func testFloatStringTime() {
for _ in 0..<100 {
let time = Float.random(in: 0...3600)
let stringValue = time.floatToTime()
let returnTime = stringValue.stringToTime()
XCTAssertEqual(time, returnTime, accuracy: 0.001)
}
}
func testDecibel() {
for _ in 0..<1000 {
let value = Float.random(in: 0...1)
let result = value.decibel
XCTAssertLessThanOrEqual(result, 0)
XCTAssertGreaterThanOrEqual(result, -160)
}
}
func testDataColor() {
for _ in 0..<100 {
let color = NSColor(calibratedRed: CGFloat.random(in: 0...1), green: CGFloat.random(in: 0...1), blue: CGFloat.random(in: 0...1), alpha: CGFloat.random(in: 0...1))
let colorData = color.data
let dataColor = colorData.color
XCTAssertEqual(color, dataColor)
}
}
func testMotusLabToolVersion() {
let version = String.motusLabToolVersion
XCTAssertNotEqual(version, "")
}
func testUrlFileName() {
let paths = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true)
var url = URL(fileURLWithPath: paths[0]).appendingPathComponent("test").appendingPathComponent("test2")
XCTAssertEqual(url.fileName, "test2")
url = url.appendingPathExtension("ext")
XCTAssertEqual(url.fileName, "test2")
}
func testMarkerCountValueTransformer() {
let markerCountValueTransformer = MarkerCountValueTransformer()
var result = markerCountValueTransformer.transformedValue(Int(1)) as! String
XCTAssertEqual(result, "1 marker")
result = markerCountValueTransformer.transformedValue(Int(3)) as! String
XCTAssertEqual(result, "3 markers")
}
func testAddLoudspeaker() {
let acousmonium = AcousmoniumFile(name: "test")
acousmonium.createLoudspeaker()
XCTAssertEqual(acousmonium.acousmoniumLoudspeakers.count, 1)
}
func testAddSession() {
let file = MotusLabFile(name: "test")
let _ = file.createSession()
XCTAssertEqual(file.sessions.count, 1)
}
func testAddMarker() {
let file = MotusLabFile(name: "test")
let session = file.createSession()
let marker = Marker(title: "test", date: 1.876)
session.addMarker(marker)
XCTAssertEqual(session.markers.count, 1)
}
func testStringSize() {
let playTimeRuler = PlayTimeRulerView()
let size = playTimeRuler.stringSize("O")
XCTAssertGreaterThan(size.width, 0)
XCTAssertGreaterThan(size.height, 0)
}
func testCleanMidiControlList() {
var values = [(input: String, output: String)]()
values.append(("1 2","1-2"))
values.append(("1 2 3","1-3"))
values.append(("1 2 3 5","1-3 5"))
values.append(("1 3 4 5","1 3-5"))
values.append(("1 2 3 5 6 7","1-3 5-7"))
values.append(("1 2 3 5 7 8 9","1-3 5 7-9"))
values.append(("1 3 4 5 7 9 10 11 12 14","1 3-5 7 9-12 14"))
values.append(("1 3 4 5 7 8 9 13 14 14 15 16 17 17","1 3-5 7-9 13-17"))
values.append(("1 3 4 5 7 8 9 10 11 12 13 14 14 15 16 17 17","1 3-5 7-17"))
let windowController = WindowController()
let midiParameters = MIDIParameters(console: 0, windowController: windowController)
for item in values {
var filterControllers = [Bool](repeating: false, count: 129)
let itemArray = item.input.components(separatedBy: " ")
for index in itemArray {
filterControllers[Int(index)!] = true
}
let result = midiParameters.cleanMidiControlList(filterControllers)
XCTAssertEqual(result, item.output, "result: " + result + " and expected: " + item.output)
}
}
}