// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2016 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//

#if DEPLOYMENT_RUNTIME_OBJC || os(Linux)
    import Foundation
    import XCTest
#else
    import SwiftFoundation
    import SwiftXCTest
#endif



class TestUnitConverter: XCTestCase {
    
    static var allTests: [(String, (TestUnitConverter) -> () throws -> Void)] {
        return [
            ("test_baseUnit", test_linearity),
            ("test_linearity", test_linearity),
            ("test_bijectivity", test_bijectivity),
            ("test_equality", test_equality),
        ]
    }
    
    func test_baseUnit() {
        XCTAssertEqual(UnitAcceleration.baseUnit().symbol,
                       UnitAcceleration.metersPerSecondSquared.symbol)
        XCTAssertEqual(UnitAngle.baseUnit().symbol,
                       UnitAngle.degrees.symbol)
        XCTAssertEqual(UnitArea.baseUnit().symbol,
                       UnitArea.squareMeters.symbol)
        XCTAssertEqual(UnitConcentrationMass.baseUnit().symbol,
                       UnitConcentrationMass.gramsPerLiter.symbol)
        XCTAssertEqual(UnitDispersion.baseUnit().symbol,
                       UnitDispersion.partsPerMillion.symbol)
        XCTAssertEqual(UnitDuration.baseUnit().symbol,
                       UnitDuration.seconds.symbol)
        XCTAssertEqual(UnitElectricCharge.baseUnit().symbol,
                       UnitElectricCharge.coulombs.symbol)
        XCTAssertEqual(UnitElectricCurrent.baseUnit().symbol,
                       UnitElectricCurrent.amperes.symbol)
        XCTAssertEqual(UnitElectricPotentialDifference.baseUnit().symbol,
                       UnitElectricPotentialDifference.volts.symbol)
        XCTAssertEqual(UnitElectricResistance.baseUnit().symbol,
                       UnitElectricResistance.ohms.symbol)
        XCTAssertEqual(UnitEnergy.baseUnit().symbol,
                       UnitEnergy.joules.symbol)
        XCTAssertEqual(UnitFrequency.baseUnit().symbol,
                       UnitFrequency.hertz.symbol)
        XCTAssertEqual(UnitFuelEfficiency.baseUnit().symbol,
                       UnitFuelEfficiency.litersPer100Kilometers.symbol)
        XCTAssertEqual(UnitLength.baseUnit().symbol,
                       UnitLength.meters.symbol)
        XCTAssertEqual(UnitIlluminance.baseUnit().symbol,
                       UnitIlluminance.lux.symbol)
        XCTAssertEqual(UnitMass.baseUnit().symbol,
                       UnitMass.kilograms.symbol)
        XCTAssertEqual(UnitPower.baseUnit().symbol,
                       UnitPower.watts.symbol)
        XCTAssertEqual(UnitPressure.baseUnit().symbol,
                       UnitPressure.newtonsPerMetersSquared.symbol)
        XCTAssertEqual(UnitSpeed.baseUnit().symbol,
                       UnitSpeed.metersPerSecond.symbol)
        XCTAssertEqual(UnitTemperature.baseUnit().symbol,
                       UnitTemperature.kelvin.symbol)
        XCTAssertEqual(UnitVolume.baseUnit().symbol,
                       UnitVolume.liters.symbol)
    }
    
    func test_linearity() {
        let coefficient = 7.0
        let baseUnitConverter = UnitConverterLinear(coefficient: coefficient)
        XCTAssertEqual(baseUnitConverter.value(fromBaseUnitValue: coefficient), 1.0)
        XCTAssertEqual(baseUnitConverter.baseUnitValue(fromValue: 1), coefficient)
    }
    
    func test_bijectivity() {
        let delta = 1e-9
        let testIdentity: (Dimension) -> Double = { dimension in
            let converter = dimension.converter
            return converter.value(fromBaseUnitValue: converter.baseUnitValue(fromValue: 1))
        }
        
        XCTAssertEqual(testIdentity(UnitAcceleration.metersPerSecondSquared), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitAcceleration.gravity), 1, accuracy: delta)
        
        XCTAssertEqual(testIdentity(UnitAngle.degrees), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitAngle.arcMinutes), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitAngle.arcSeconds), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitAngle.radians), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitAngle.gradians), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitAngle.revolutions), 1, accuracy: delta)
        
        XCTAssertEqual(testIdentity(UnitArea.squareMegameters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitArea.squareKilometers), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitArea.squareMeters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitArea.squareCentimeters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitArea.squareMillimeters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitArea.squareMicrometers), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitArea.squareNanometers), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitArea.squareInches), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitArea.squareFeet), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitArea.squareYards), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitArea.squareMiles), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitArea.acres), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitArea.ares), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitArea.hectares), 1, accuracy: delta)
        
        XCTAssertEqual(testIdentity(UnitConcentrationMass.gramsPerLiter), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitConcentrationMass.milligramsPerDeciliter), 1, accuracy: delta)
        XCTAssertEqual(
            testIdentity(UnitConcentrationMass.millimolesPerLiter(withGramsPerMole: 1)), 1, accuracy: delta)
        
        XCTAssertEqual(testIdentity(UnitDispersion.partsPerMillion), 1, accuracy: delta)
        
        XCTAssertEqual(testIdentity(UnitDuration.seconds), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitDuration.minutes), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitDuration.hours), 1, accuracy: delta)

        XCTAssertEqual(testIdentity(UnitElectricCharge.coulombs), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitElectricCharge.megaampereHours), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitElectricCharge.kiloampereHours), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitElectricCharge.ampereHours), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitElectricCharge.milliampereHours), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitElectricCharge.microampereHours), 1, accuracy: delta)

        XCTAssertEqual(testIdentity(UnitElectricCurrent.megaamperes), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitElectricCurrent.kiloamperes), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitElectricCurrent.amperes), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitElectricCurrent.milliamperes), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitElectricCurrent.microamperes), 1, accuracy: delta)
        
        XCTAssertEqual(testIdentity(UnitElectricPotentialDifference.megavolts), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitElectricPotentialDifference.kilovolts), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitElectricPotentialDifference.volts), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitElectricPotentialDifference.millivolts), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitElectricPotentialDifference.microvolts), 1, accuracy: delta)

        XCTAssertEqual(testIdentity(UnitElectricResistance.megaohms), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitElectricResistance.kiloohms), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitElectricResistance.ohms), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitElectricResistance.milliohms), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitElectricResistance.microohms), 1, accuracy: delta)
        
        XCTAssertEqual(testIdentity(UnitEnergy.kilojoules), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitEnergy.joules), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitEnergy.kilocalories), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitEnergy.calories), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitEnergy.kilowattHours), 1, accuracy: delta)

        XCTAssertEqual(testIdentity(UnitFrequency.terahertz), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitFrequency.gigahertz), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitFrequency.megahertz), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitFrequency.kilohertz), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitFrequency.hertz), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitFrequency.millihertz), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitFrequency.microhertz), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitFrequency.nanohertz), 1, accuracy: delta)
        
        XCTAssertEqual(testIdentity(UnitFuelEfficiency.litersPer100Kilometers), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitFuelEfficiency.milesPerImperialGallon), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitFuelEfficiency.milesPerGallon), 1, accuracy: delta)

        XCTAssertEqual(testIdentity(UnitLength.megameters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.kilometers), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.hectometers), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.decameters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.meters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.decimeters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.centimeters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.millimeters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.micrometers), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.nanometers), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.picometers), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.inches), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.feet), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.yards), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.miles), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.scandinavianMiles), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.nauticalMiles), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.fathoms), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.furlongs), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.astronomicalUnits), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitLength.parsecs), 1, accuracy: delta)
        
        XCTAssertEqual(testIdentity(UnitIlluminance.lux), 1, accuracy: delta)
        
        XCTAssertEqual(testIdentity(UnitMass.kilograms), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitMass.grams), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitMass.decigrams), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitMass.milligrams), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitMass.nanograms), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitMass.picograms), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitMass.ounces), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitMass.pounds), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitMass.stones), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitMass.metricTons), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitMass.carats), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitMass.ouncesTroy), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitMass.slugs), 1, accuracy: delta)
        
        XCTAssertEqual(testIdentity(UnitPower.terawatts), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPower.gigawatts), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPower.megawatts), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPower.kilowatts), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPower.watts), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPower.milliwatts), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPower.microwatts), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPower.nanowatts), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPower.picowatts), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPower.femtowatts), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPower.horsepower), 1, accuracy: delta)
        
        XCTAssertEqual(testIdentity(UnitPressure.newtonsPerMetersSquared), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPressure.gigapascals), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPressure.megapascals), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPressure.kilopascals), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPressure.hectopascals), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPressure.inchesOfMercury), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPressure.bars), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPressure.millibars), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPressure.millimetersOfMercury), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitPressure.poundsForcePerSquareInch), 1, accuracy: delta)

        XCTAssertEqual(testIdentity(UnitSpeed.metersPerSecond), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitSpeed.kilometersPerHour), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitSpeed.milesPerHour), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitSpeed.knots), 1, accuracy: delta)
        
        XCTAssertEqual(testIdentity(UnitTemperature.kelvin), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitTemperature.celsius), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitTemperature.fahrenheit), 1, accuracy: delta)

        XCTAssertEqual(testIdentity(UnitVolume.megaliters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.kiloliters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.liters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.deciliters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.milliliters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.cubicKilometers), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.cubicMeters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.cubicDecimeters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.cubicCentimeters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.cubicMillimeters), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.cubicInches), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.cubicFeet), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.cubicYards), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.cubicMiles), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.acreFeet), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.bushels), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.teaspoons), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.tablespoons), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.fluidOunces), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.cups), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.pints), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.quarts), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.gallons), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.imperialTeaspoons), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.imperialTablespoons), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.imperialFluidOunces), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.imperialPints), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.imperialQuarts), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.imperialGallons), 1, accuracy: delta)
        XCTAssertEqual(testIdentity(UnitVolume.metricCups), 1, accuracy: delta)
    }

    func test_equality() {
        let u1 = UnitConverterLinear(coefficient: 1, constant: 2)
        let u2 = UnitConverterLinear(coefficient: 1, constant: 2)
        XCTAssertEqual(u1, u2)
        XCTAssertEqual(u2, u1)

        let u3 = UnitConverterLinear(coefficient: 1, constant: 3)
        XCTAssertNotEqual(u1, u3)
        XCTAssertNotEqual(u3, u1)

        let u4 = UnitConverterLinear(coefficient: 2, constant: 2)
        XCTAssertNotEqual(u1, u4)
        XCTAssertNotEqual(u4, u1)

        // Cannot test UnitConverterReciprocal due to no support for @testable import.
    }
    
}
