Skip to content

Commit

Permalink
Greater than 90 degrees allowed (#121)
Browse files Browse the repository at this point in the history
  • Loading branch information
mfikes authored Jan 12, 2024
1 parent 8a13b88 commit d038855
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
4 changes: 2 additions & 2 deletions Impedance Converter/Impedance Converter/ViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ class ViewModel: ObservableObject, Codable {
}
set {
let previousImmittance = immittance
immittance = Immittance(impedance: newValue)
immittance = Immittance(impedance: ensurePositiveReal(value: newValue))
if (immittance != previousImmittance) {
addCheckpoint()
hold = .none
Expand All @@ -199,7 +199,7 @@ class ViewModel: ObservableObject, Codable {
}
set {
let previousImmittance = immittance
immittance = Immittance(admittance: newValue)
immittance = Immittance(admittance: ensurePositiveReal(value: newValue))
if (immittance != previousImmittance) {
addCheckpoint()
hold = .none
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ class ImmittanceTests: ViewModelTestBase {
func testImmittanceWithNegativeValues() {
// Negative real part in impedance
viewModel.impedance = Complex(-50, 10)
XCTAssertEqual(viewModel.impedance, Complex(-50, 10))
XCTAssertEqual(viewModel.impedance, Complex(0, 10))

// Negative imaginary part in admittance
viewModel.admittance = Complex(0.02, -0.005)
Expand All @@ -159,6 +159,26 @@ class ImmittanceTests: ViewModelTestBase {
XCTAssertEqual(viewModel.admittance, Complex(0.03, 0.04))
}

func testImpedanceGreaterThanPos90() {
viewModel.impedance = Complex.init(length: 50, phase: Angle(degrees: 95).radians)
XCTAssertEqual(Angle(radians: viewModel.impedance.phase).degrees, 90)
}

func testImpedanceLessThanNeg90() {
viewModel.impedance = Complex.init(length: 50, phase: Angle(degrees: -95).radians)
XCTAssertEqual(Angle(radians: viewModel.impedance.phase).degrees, -90)
}

func testAdmittanceGreaterThanPos90() {
viewModel.admittance = Complex.init(length: 50, phase: Angle(degrees: 95).radians)
XCTAssertEqual(Angle(radians: viewModel.admittance.phase).degrees, 90)
}

func testAdmittanceLessThanNeg90() {
viewModel.admittance = Complex.init(length: 50, phase: Angle(degrees: -95).radians)
XCTAssertEqual(Angle(radians: viewModel.admittance.phase).degrees, -90)
}

func testReciprocalRelationships() {
// Impedance and its reciprocal admittance
let impedance = Complex(100, -50)
Expand Down

0 comments on commit d038855

Please sign in to comment.