fix float-int error in color interpolation and add some more tests
This commit is contained in:
@@ -6,8 +6,8 @@ android {
|
|||||||
applicationId "de.weseng.wifiweatherstation"
|
applicationId "de.weseng.wifiweatherstation"
|
||||||
minSdkVersion 26
|
minSdkVersion 26
|
||||||
targetSdkVersion 28
|
targetSdkVersion 28
|
||||||
versionCode 20190309
|
versionCode 20190310
|
||||||
versionName "2019.3.9"
|
versionName "2019.3.10"
|
||||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
buildTypes {
|
buildTypes {
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import android.view.MenuItem;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TableLayout;
|
import android.widget.TableLayout;
|
||||||
import android.widget.TableRow;
|
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
@@ -25,6 +24,7 @@ import org.json.JSONObject;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.concurrent.locks.Condition;
|
import java.util.concurrent.locks.Condition;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
@@ -325,12 +325,12 @@ public class MainNativeActivity extends AppCompatActivity {
|
|||||||
HashMap<String, String> hm = dataList.get(n - 1);
|
HashMap<String, String> hm = dataList.get(n - 1);
|
||||||
|
|
||||||
float temp = Float.parseFloat(hm.get("temperature"));
|
float temp = Float.parseFloat(hm.get("temperature"));
|
||||||
String temperature = String.format("%.1f", temp);
|
String temperature = String.format(Locale.getDefault(), "%.1f", temp);
|
||||||
|
|
||||||
float humi = Float.parseFloat(hm.get("humidity"));
|
float humi = Float.parseFloat(hm.get("humidity"));
|
||||||
String humidity = String.format("%.1f", humi);
|
String humidity = String.format(Locale.getDefault(), "%.1f", humi);
|
||||||
|
|
||||||
Color green = Color.valueOf(0xff00ff00);
|
Color green = Color.valueOf(0x71ff5f);
|
||||||
Color red = Color.valueOf(0xffd1655d);
|
Color red = Color.valueOf(0xffd1655d);
|
||||||
Color blue = Color.valueOf(Color.rgb(113, 157, 195));
|
Color blue = Color.valueOf(Color.rgb(113, 157, 195));
|
||||||
|
|
||||||
@@ -364,17 +364,17 @@ public class MainNativeActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
TextView tv;
|
TextView tv;
|
||||||
tv = findViewById(idMin1);
|
tv = findViewById(idMin1);
|
||||||
tv.setText(String.format("%.1f", min1));
|
tv.setText(String.format(Locale.getDefault(), "%.1f", min1));
|
||||||
tv = findViewById(idMax1);
|
tv = findViewById(idMax1);
|
||||||
tv.setText(String.format("%.1f", max1));
|
tv.setText(String.format(Locale.getDefault(), "%.1f", max1));
|
||||||
tv = findViewById(idDelta1);
|
tv = findViewById(idDelta1);
|
||||||
tv.setText(String.format("%.1f", max1 - min1));
|
tv.setText(String.format(Locale.getDefault(), "%.1f", max1 - min1));
|
||||||
tv = findViewById(idMin2);
|
tv = findViewById(idMin2);
|
||||||
tv.setText(String.format("%.1f", min2));
|
tv.setText(String.format(Locale.getDefault(), "%.1f", min2));
|
||||||
tv = findViewById(idMax2);
|
tv = findViewById(idMax2);
|
||||||
tv.setText(String.format("%.1f", max2));
|
tv.setText(String.format(Locale.getDefault(), "%.1f", max2));
|
||||||
tv = findViewById(idDelta2);
|
tv = findViewById(idDelta2);
|
||||||
tv.setText(String.format("%.1f", max2 - min2));
|
tv.setText(String.format(Locale.getDefault(), "%.1f", max2 - min2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -400,7 +400,7 @@ public class MainNativeActivity extends AppCompatActivity {
|
|||||||
terminateTask();
|
terminateTask();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void runAgain() {
|
void runAgain() {
|
||||||
// Call this to request data from the server again
|
// Call this to request data from the server again
|
||||||
lock.lock();
|
lock.lock();
|
||||||
try {
|
try {
|
||||||
@@ -410,7 +410,7 @@ public class MainNativeActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void terminateTask() {
|
void terminateTask() {
|
||||||
// The task will only finish when we call this method
|
// The task will only finish when we call this method
|
||||||
finished = true;
|
finished = true;
|
||||||
//lock.unlock();
|
//lock.unlock();
|
||||||
@@ -448,9 +448,9 @@ public class MainNativeActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
int interpolate(int pBegin, int pEnd, int pStep, int pMax) {
|
int interpolate(int pBegin, int pEnd, int pStep, int pMax) {
|
||||||
if (pBegin < pEnd) {
|
if (pBegin < pEnd) {
|
||||||
return ((pEnd - pBegin) * (pStep / pMax)) + pBegin;
|
return (int) ((pEnd - pBegin) * ((float) pStep / pMax)) + pBegin;
|
||||||
} else {
|
} else {
|
||||||
return ((pBegin - pEnd) * (1 - (pStep / pMax))) + pEnd;
|
return (int) ((pBegin - pEnd) * (1 - ((float) pStep / pMax))) + pEnd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
<TableRow
|
<TableRow
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
android:layout_marginBottom="-8dp"
|
||||||
android:weightSum="6">
|
android:weightSum="6">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
|||||||
@@ -8,26 +8,71 @@ public class MainNativeActivityTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void valueToColorRGB_below() {
|
public void valueToColorRGB_below() {
|
||||||
assertEquals(new MainNativeActivity().valueToColorRGB(
|
assertEquals(0x719dc3, new MainNativeActivity().valueToColorRGB(
|
||||||
10, 17, 19, 23, 25,
|
10, 17, 19, 23, 25,
|
||||||
0x719dc3, 0xff00ff00, 0xffd1655d),
|
0x719dc3, 0xff00ff00, 0xffd1655d));
|
||||||
0x719dc3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void valueToColorRGB_ideal() {
|
public void valueToColorRGB_ideal() {
|
||||||
assertEquals(new MainNativeActivity().valueToColorRGB(
|
assertEquals(0xff00ff00, new MainNativeActivity().valueToColorRGB(
|
||||||
20, 17, 19, 23, 25,
|
20, 17, 19, 23, 25,
|
||||||
0x719DC3, 0xff00ff00, 0xffd1655d),
|
0x719DC3, 0xff00ff00, 0xffd1655d));
|
||||||
0xff00ff00);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void valueToColorRGB_above() {
|
public void valueToColorRGB_above() {
|
||||||
assertEquals(new MainNativeActivity().valueToColorRGB(
|
assertEquals(0xffd1655d, new MainNativeActivity().valueToColorRGB(
|
||||||
30, 17, 19, 23, 25,
|
30, 17, 19, 23, 25,
|
||||||
0x719DC3, 0xff00ff00, 0xffd1655d),
|
0x719DC3, 0xff00ff00, 0xffd1655d));
|
||||||
0xffd1655d);
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void interpolate_0_255_0() {
|
||||||
|
assertEquals(0, new MainNativeActivity().interpolate(
|
||||||
|
0, 255, 0, 100));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void interpolate_0_255_50() {
|
||||||
|
assertEquals(127, new MainNativeActivity().interpolate(
|
||||||
|
0, 255, 50, 100));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void interpolate_0_255_100() {
|
||||||
|
assertEquals(255, new MainNativeActivity().interpolate(
|
||||||
|
0, 255, 100, 100));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void interpolateColor_00ff00_ff0000_0() {
|
||||||
|
MainNativeActivity a = new MainNativeActivity();
|
||||||
|
assertEquals(0xFFFFFF & 0xff00ff00,
|
||||||
|
a.interpolateColor(0xff00ff00, 0xffff0000, 0, 100));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void interpolateColor_00ff00_ff0000_50() {
|
||||||
|
MainNativeActivity a = new MainNativeActivity();
|
||||||
|
assertEquals(0xFFFFFF & 0xff7f7f00,
|
||||||
|
a.interpolateColor(0xff00ff00, 0xffff0000, 50, 100));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void interpolateColor_00ff00_ff0000_100() {
|
||||||
|
MainNativeActivity a = new MainNativeActivity();
|
||||||
|
assertEquals(0xFFFFFF & 0xffff0000,
|
||||||
|
a.interpolateColor(0xff00ff00, 0xffff0000, 100, 100));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void valueToColorRGB_between_ideal_and_above() {
|
||||||
|
MainNativeActivity a = new MainNativeActivity();
|
||||||
|
assertEquals(a.interpolateColor(0xff00ff00, 0xffd1655d, 50, 100),
|
||||||
|
a.valueToColorRGB(
|
||||||
|
24, 17, 19, 23, 25,
|
||||||
|
0x719DC3, 0xff00ff00, 0xffd1655d));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user