diff --git a/app/src/test/BMICalculatorTest.kt b/app/src/test/BMICalculatorTest.kt new file mode 100644 index 0000000..54be5de --- /dev/null +++ b/app/src/test/BMICalculatorTest.kt @@ -0,0 +1,63 @@ +package com.example.tiptime + +import org.junit.Assert.assertEquals +import org.junit.Test + +class BMICalculatorTest { + // Test untuk perhitungan BMI dengan unit Metric + @Test + fun calculateBMI_metricUnits_correctCalculation() { + val result = calculateBMI(170.0, 65.0, false) + assertEquals("22.5", result) + } + + // Test untuk perhitungan BMI dengan unit USC (Imperial) + @Test + fun calculateBMI_uscUnits_correctCalculation() { + val result = calculateBMI(68.0, 150.0, true) + // Rumus: 703 * (150 / (68^2)) = 22.8 + assertEquals("22.8", result) + } + + // Test jika input tinggi atau berat = 0 → hasil harus "0.0" + @Test + fun calculateBMI_zeroInput_returnsZero() { + val result = calculateBMI(0.0, 0.0, false) + assertEquals("0.0", result) + } + + // Test kategori BMI untuk underweight + @Test + fun calculateBMICategory_underweight_returnsUnderweight() { + val result = calculateBMICategory("17.5") + assertEquals("Underweight", result) + } + + // Test kategori BMI untuk normal weight + @Test + fun calculateBMICategory_normal_returnsNormal() { + val result = calculateBMICategory("22.0") + assertEquals("Normal weight", result) + } + + // Test kategori BMI untuk overweight + @Test + fun calculateBMICategory_overweight_returnsOverweight() { + val result = calculateBMICategory("27.0") + assertEquals("Overweight", result) + } + + // Test kategori BMI untuk obese + @Test + fun calculateBMICategory_obese_returnsObese() { + val result = calculateBMICategory("32.0") + assertEquals("Obese", result) + } + + // Test input tidak valid (string bukan angka) + @Test + fun calculateBMICategory_invalidInput_returnsTidakDiketahui() { + val result = calculateBMICategory("abc") + assertEquals("Underweight", result) // default 0.0 masuk ke underweight + } +} \ No newline at end of file