Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e0c05248 authored by Julia Kawano's avatar Julia Kawano
Browse files

Fix NAN temp on system bar HVAC controls

Fixing bug where the AdjustableTemperatureView displayed "NaN" when no
temperature was available (namely when booting) to instead display "--"
(which was the previous behavior).

Also matched previous temperature view behavior to display a string when
the min or max temperature has been set.

Bug: 168744829
Test: manual - built on flame_car
Test: atest AdjustableTemperatureViewTest
Change-Id: I048cf09fb31b61905c922b7e531f497bee2586d9
parent b782c811
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@
    <string name="hvac_min_text">Min</string>
    <!-- String to represent largest setting of an HVAC system [CHAR LIMIT=10]-->
    <string name="hvac_max_text">Max</string>
    <!-- String to display when no HVAC temperature is available -->
    <string name="hvac_null_temp_text" translatable="false">--</string>
    <!-- Text for voice recognition toast. [CHAR LIMIT=60] -->
    <string name="voice_recognition_toast">Voice recognition now handled by connected Bluetooth device</string>
    <!-- Name of Guest Profile. [CHAR LIMIT=35] -->
+20 −3
Original line number Diff line number Diff line
@@ -40,6 +40,9 @@ public class AdjustableTemperatureView extends LinearLayout implements Temperatu
    private float mMinTempC;
    private float mMaxTempC;
    private String mTempFormat;
    private String mNullTempText;
    private String mMinTempText;
    private String mMaxTempText;
    private boolean mDisplayInFahrenheit = false;

    private HvacController mHvacController;
@@ -59,6 +62,9 @@ public class AdjustableTemperatureView extends LinearLayout implements Temperatu
        mTempFormat = getResources().getString(R.string.hvac_temperature_format);
        mMinTempC = getResources().getFloat(R.dimen.hvac_min_value_celsius);
        mMaxTempC = getResources().getFloat(R.dimen.hvac_max_value_celsius);
        mNullTempText = getResources().getString(R.string.hvac_null_temp_text);
        mMinTempText = getResources().getString(R.string.hvac_min_text);
        mMaxTempText = getResources().getString(R.string.hvac_max_text);
        initializeButtons();
    }

@@ -69,12 +75,23 @@ public class AdjustableTemperatureView extends LinearLayout implements Temperatu

    @Override
    public void setTemp(float tempC) {
        if (tempC > mMaxTempC || tempC < mMinTempC) {
            return;
        }
        if (mTempTextView == null) {
            mTempTextView = findViewById(R.id.hvac_temperature_text);
        }
        if (Float.isNaN(tempC)) {
            mTempTextView.setText(mNullTempText);
            return;
        }
        if (tempC <= mMinTempC) {
            mTempTextView.setText(mMinTempText);
            mCurrentTempC = mMinTempC;
            return;
        }
        if (tempC >= mMaxTempC) {
            mTempTextView.setText(mMaxTempText);
            mCurrentTempC = mMaxTempC;
            return;
        }
        mTempTextView.setText(String.format(mTempFormat,
                mDisplayInFahrenheit ? convertToFahrenheit(tempC) : tempC));
        mCurrentTempC = tempC;
+42 −0
Original line number Diff line number Diff line
@@ -97,6 +97,48 @@ public class AdjustableTemperatureViewTest extends SysuiTestCase {
        assertEquals(tempText.getText(), String.format(mFormat, TEMP_CELSIUS));
    }

    @Test
    public void setTemp_tempNaN_setsTextToNaNText() {
        when(mCarPropertyManager.isPropertyAvailable(eq(HVAC_TEMPERATURE_SET),
                anyInt())).thenReturn(true);
        when(mCarPropertyManager.getFloatProperty(eq(HVAC_TEMPERATURE_SET), anyInt())).thenReturn(
                Float.NaN);

        mHvacController.addTemperatureViewToController(mAdjustableTemperatureView);

        TextView tempText = mAdjustableTemperatureView.findViewById(R.id.hvac_temperature_text);
        assertEquals(tempText.getText(),
                getContext().getResources().getString(R.string.hvac_null_temp_text));
    }

    @Test
    public void setTemp_tempBelowMin_setsTextToMinTempText() {
        when(mCarPropertyManager.isPropertyAvailable(eq(HVAC_TEMPERATURE_SET),
                anyInt())).thenReturn(true);
        when(mCarPropertyManager.getFloatProperty(eq(HVAC_TEMPERATURE_SET), anyInt())).thenReturn(
                getContext().getResources().getFloat(R.dimen.hvac_min_value_celsius));

        mHvacController.addTemperatureViewToController(mAdjustableTemperatureView);

        TextView tempText = mAdjustableTemperatureView.findViewById(R.id.hvac_temperature_text);
        assertEquals(tempText.getText(),
                getContext().getResources().getString(R.string.hvac_min_text));
    }

    @Test
    public void setTemp_tempAboveMax_setsTextToMaxTempText() {
        when(mCarPropertyManager.isPropertyAvailable(eq(HVAC_TEMPERATURE_SET),
                anyInt())).thenReturn(true);
        when(mCarPropertyManager.getFloatProperty(eq(HVAC_TEMPERATURE_SET), anyInt())).thenReturn(
                getContext().getResources().getFloat(R.dimen.hvac_max_value_celsius));

        mHvacController.addTemperatureViewToController(mAdjustableTemperatureView);

        TextView tempText = mAdjustableTemperatureView.findViewById(R.id.hvac_temperature_text);
        assertEquals(tempText.getText(),
                getContext().getResources().getString(R.string.hvac_max_text));
    }

    @Test
    public void setTemperatureToFahrenheit_callsViewSetDisplayInFahrenheit() {
        when(mCarPropertyManager.isPropertyAvailable(eq(HVAC_TEMPERATURE_SET),