Web implementation of the Gourmet Recipe Manager
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

143 lines
3.9 KiB

package com.mousetech.gourmetj.utils;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import com.mousetech.gourmetj.utils.IngredientDigester.IngredientAmountFormat;
public class IngredientDigesterTest {
@Test
public void digestFractionTest() {
Double value;
value = IngredientDigester.digestFraction("5");
assertEquals(0.0d, value, 0.001); // No fractional part
value = IngredientDigester.digestFraction("1/2");
assertEquals(0.5d, value, 0.001);
value = IngredientDigester.digestFraction("3 3/4");
assertEquals(3.75d, value, 0.001);
value = IngredientDigester.digestFraction("33 - 1/3");
assertEquals(33.33333333d, value, 0.001);
}
@Test
public void digestSingleAmountTest() {
Double value;
value = IngredientDigester.parseSingleAmount("5");
assertEquals(5.0d, value, 0.001); // No fractional part
value = IngredientDigester.parseSingleAmount("1/2");
assertEquals(0.5d, value, 0.001);
value = IngredientDigester.parseSingleAmount("3 3/4");
assertEquals(3.75d, value, 0.001);
// value = IngredientDigester.parseSingleAmount("33 - 1/3");
// assertEquals(0.33333333d, value, 0.001);
}
@Test
public void parseAmountTest() {
Double[] value;
value = IngredientDigester.digestAmount("5");
assertEquals(5.0d, value[0], 0.001);
assertNull(value[1]);
value = IngredientDigester.digestAmount("2½");
assertEquals(2.5d, value[0], 0.001);
assertNull(value[1]);
value = IngredientDigester.digestAmount("7 ⅓");
assertEquals(7.33333d, value[0], 0.001);
assertNull(value[1]);
value = IngredientDigester.digestAmount("1/3");
assertEquals(0.33333d, value[0], 0.001);
assertNull(value[1]);
value = IngredientDigester.digestAmount("9 3/4");
assertEquals(9.75d, value[0], 0.001);
assertNull(value[1]);
value = IngredientDigester.digestAmount("3-5");
assertEquals(3.0d, value[0], 0.001);
assertEquals(5.0d, value[1], 0.001);
value = IngredientDigester.digestAmount("1/2 -3/4");
assertEquals(0.5d, value[0], 0.001);
assertEquals(0.75d, value[1], 0.001);
value = IngredientDigester.digestAmount("¼-⅓");
assertEquals(0.25d, value[0], 0.001);
assertEquals(0.33333333d, value[1], 0.001);
}
@Test
public void testAmountParser() {
String[] results;
results = IngredientDigester.parseFancyNumber("1 cup milk");
assertEquals("1", results[0]);
assertEquals("cup milk", results[1]);
results = IngredientDigester.parseFancyNumber("2 ½ lbs pease");
assertEquals("2 ½", results[0]);
assertEquals("lbs pease", results[1]);
results = IngredientDigester.parseFancyNumber("2 3/4 cups water");
assertEquals("2 3/4", results[0]);
assertEquals("cups water", results[1]);
results = IngredientDigester.parseFancyNumber("7 1/2 cups water");
assertEquals("7 1/2", results[0]);
assertEquals("cups water", results[1]);
}
@Test
public void testDisplayFormatTest() {
String value;
value = IngredientDigester.displayAmountPart(
IngredientAmountFormat.IA_TEXT, 0d);
assertEquals("", value);
value = IngredientDigester.displayAmountPart(
IngredientAmountFormat.IA_TEXT, 0.5d);
assertEquals("1/2", value);
value = IngredientDigester.displayAmountPart(
IngredientAmountFormat.IA_TEXT, 12.0d);
assertEquals("12", value);
value = IngredientDigester.displayAmountPart(
IngredientAmountFormat.IA_SYMBOLS, 3.5d);
assertEquals("3½", value);
value = IngredientDigester.displayAmountPart(
IngredientAmountFormat.IA_DECIMAL, 3.5d);
assertEquals("3.5", value);
value = IngredientDigester.displayAmountPart(
IngredientAmountFormat.IA_TEXT, 3.5d);
assertEquals("3 1/2", value);
value = IngredientDigester.displayAmountPart(
IngredientAmountFormat.IA_SYMBOLS, 7.333333333d);
assertEquals("7⅓", value);
value = IngredientDigester.displayAmountPart(
IngredientAmountFormat.IA_SYMBOLS, 7.933333333d);
assertEquals("7.933", value);
}
}