ðŸŽ‰ Exercism Research is now launched. Help Exercism, help science and have some fun at research.exercism.io ðŸŽ‰

# jlacar's solution

## to Resistor Color in the Java Track

Published at May 01 2019 · 0 comments
Instructions
Test suite
Solution

Resistors have color coded bands, where each color maps to a number. The first 2 bands of a resistor have a simple encoding scheme: each color maps to a single number.

These colors are encoded as follows:

• Black: 0
• Brown: 1
• Red: 2
• Orange: 3
• Yellow: 4
• Green: 5
• Blue: 6
• Violet: 7
• Grey: 8
• White: 9

Mnemonics map the colors to the numbers, that, when stored as an array, happen to map to their index in the array: Better Be Right Or Your Great Big Values Go Wrong.

More information on the color encoding of resistors can be found in the Electronic color code Wikipedia article

## Setup

Go through the setup instructions for Java to install the necessary dependencies:

https://exercism.io/tracks/java/installation

# Running the tests

You can run all the tests for an exercise by entering the following in your terminal:

``````\$ gradle test
``````

Use `gradlew.bat` if you're on Windows

In the test suites all tests but the first have been skipped.

Once you get a test passing, you can enable the next one by removing the `@Ignore("Remove to run test")` annotation.

## Source

Maud de Vries, Erik Schierboom https://github.com/exercism/problem-specifications/issues/1458

## Submitting Incomplete Solutions

It's possible to submit an incomplete solution so you can see how others have completed the exercise.

### ResistorColorTest.java

``````import org.junit.Before;
import org.junit.Test;
import org.junit.Ignore;

import static org.junit.Assert.assertEquals;

public class ResistorColorTest {

private ResistorColor resistorColor;

@Before
public void setup() {
resistorColor = new ResistorColor();
}

@Test
public void testBlackColorCode() {
String input = "black";
int expected = 0;

assertEquals(expected, resistorColor.colorCode(input));
}

@Ignore("Remove to run test")
@Test
public void testWhiteColorCode() {
String input = "white";
int expected = 9;

assertEquals(expected, resistorColor.colorCode(input));
}

@Ignore("Remove to run test")
@Test
public void testOrangeColorCode() {
String input = "orange";
int expected = 3;

assertEquals(expected, resistorColor.colorCode(input));
}

@Ignore("Remove to run test")
@Test
public void testColors() {
String[] expected = {"black", "brown", "red", "orange", "yellow", "green", "blue", "violet", "grey", "white"};

assertEquals(expected, resistorColor.colors());
}

}``````
``````import java.util.Arrays;
import java.util.stream.Collectors;

class ResistorColor {
private enum Color {
black, brown, red, orange, yellow, green, blue, violet, grey, white;
}

/**
* Converts the given color name to its equivalent color code.
*
* @param color the name of the color. Must be black, brown, red, orange,
*              yellow, green, blue, violet, grey, or white. Case is ignored.
* @return the color code of the specified color
* @throws IllegalArgumentException if color is not a valid band color
*/
int colorCode(String color) {
return Color.valueOf(color.toLowerCase()).ordinal();
}

String[] colors() {
return Arrays.stream(Color.values())
.map(Color::name)
.collect(Collectors.toList())
.toArray(new String[Color.values().length]);
}
}``````