A new Overview style: the Grid over the roads round the car from
OpenStreetMap, drawn in the floor's perspective, heading up, the bigger
roads glowing brighter, the car as a chevron.
Server: POST /v1/map/roads {z:14,x,y} fetches a tile's drivable roads
from Overpass (OVERPASS_URL; one request at a time, at least a second
apart), simplifies them to tile-local points in four classes, caches
them for 30 days and never logs the tile.
App: MapRoads keeps the 3x3 tiles round the car from its own cache or
the server; GPS only while the style is shown; bearing from the GPS or
from successive positions. Without GPS, server or roads the plain floor
says why. OSM attribution on screen and in LICENSE.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LhzAVaUyqcw5PkGjz4mWW6
71 lines
3.1 KiB
Java
71 lines
3.1 KiB
Java
package com.evsuite.abrp;
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
import static org.junit.Assert.assertFalse;
|
|
import static org.junit.Assert.assertTrue;
|
|
|
|
import org.junit.Test;
|
|
|
|
/** The Overview styles — pure JVM. */
|
|
public class OverviewStyleTest {
|
|
|
|
@Test
|
|
public void storedValuesRoundTrip() {
|
|
for (OverviewStyle style : OverviewStyle.values()) {
|
|
assertEquals(style, OverviewStyle.fromPref(style.name()));
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void oldAndUnknownValues() {
|
|
assertEquals(OverviewStyle.GAUGES, OverviewStyle.fromPref("DASHBOARD"));
|
|
assertEquals(OverviewStyle.RETRO, OverviewStyle.fromPref("RETRO_ACCENT"));
|
|
assertEquals(OverviewStyle.TERMINAL, OverviewStyle.fromPref("TERMINAL_ACCENT"));
|
|
assertTrue(OverviewStyle.wasAccentEntry("RETRO_ACCENT"));
|
|
assertFalse(OverviewStyle.wasAccentEntry("RETRO"));
|
|
assertEquals(OverviewStyle.TILES, OverviewStyle.fromPref(null));
|
|
assertEquals(OverviewStyle.TILES, OverviewStyle.fromPref("NOPE"));
|
|
}
|
|
|
|
@Test
|
|
public void colourOptions() {
|
|
assertTrue(OverviewStyle.TILES.usesAccent);
|
|
assertFalse(OverviewStyle.TILES.hasOriginal);
|
|
assertTrue(OverviewStyle.RETRO.usesAccent);
|
|
assertTrue(OverviewStyle.RETRO.hasOriginal);
|
|
assertTrue(OverviewStyle.TERMINAL.hasOriginal);
|
|
assertFalse(OverviewStyle.CARTOON.usesAccent);
|
|
assertFalse(OverviewStyle.NIXIE.usesAccent);
|
|
assertTrue(OverviewStyle.CHRONOGRAPH.usesAccent);
|
|
}
|
|
|
|
@Test
|
|
public void removedStylesFallBackToTiles() {
|
|
assertEquals(OverviewStyle.TILES, OverviewStyle.fromPref("MASCOT"));
|
|
assertEquals(OverviewStyle.TILES, OverviewStyle.fromPref("BLUEPRINT"));
|
|
assertEquals(OverviewStyle.TILES, OverviewStyle.fromPref("AVIATION"));
|
|
}
|
|
|
|
@Test
|
|
public void ownPaletteForTheApp() {
|
|
// Fixed palettes always; Retro and Terminal only with "Original colours".
|
|
assertTrue(OverviewStyle.CARTOON.showsOwnPalette(false));
|
|
assertTrue(OverviewStyle.RETRO.showsOwnPalette(true));
|
|
assertFalse(OverviewStyle.RETRO.showsOwnPalette(false));
|
|
assertFalse(OverviewStyle.CHRONOGRAPH.showsOwnPalette(true));
|
|
// Every style shown in its own palette has the app's matching colours.
|
|
for (OverviewStyle style : OverviewStyle.values()) {
|
|
if (style.showsOwnPalette(true)) assertTrue(style.name(), StylePalette.overlay(style) != 0);
|
|
else assertEquals(style.name(), 0, StylePalette.overlay(style));
|
|
}
|
|
assertEquals(AccentColor.HOLBORN_BLUE.overlay,
|
|
StylePalette.appOverlay(OverviewStyle.RETRO, false, AccentColor.HOLBORN_BLUE));
|
|
assertEquals(R.style.ThemeOverlay_EV_Style_Retro,
|
|
StylePalette.appOverlay(OverviewStyle.RETRO, true, AccentColor.HOLBORN_BLUE));
|
|
assertEquals("original_colours_RETRO", OverviewStyle.RETRO.originalKey());
|
|
// Grid with map shares the Grid's choice.
|
|
assertEquals(OverviewStyle.GRID.originalKey(), OverviewStyle.GRID_MAP.originalKey());
|
|
assertEquals(StylePalette.overlay(OverviewStyle.GRID), StylePalette.overlay(OverviewStyle.GRID_MAP));
|
|
}
|
|
}
|