|
@@ -1,27 +1,65 @@
|
|
BEGIN;
|
|
BEGIN;
|
|
|
|
+CALL insert_unit ('fl. oz. (US)');
|
|
|
|
+CALL insert_unit ('Pint (US)');
|
|
CALL insert_unit ('Tbsp (US)');
|
|
CALL insert_unit ('Tbsp (US)');
|
|
CALL insert_unit ('tsp (US)');
|
|
CALL insert_unit ('tsp (US)');
|
|
CALL insert_unit ('Cup (US)');
|
|
CALL insert_unit ('Cup (US)');
|
|
-CALL insert_unit_conversion ('Cup (US)', 'mL', 236.5875);
|
|
|
|
|
|
+CALL insert_unit ('Quart (US)');
|
|
|
|
+CALL insert_unit ('Gallon (US)');
|
|
|
|
+-- using customary cup as per https://en.wikipedia.org/wiki/Cup_(unit)
|
|
|
|
+CALL insert_unit_conversion ('Cup (US)', 'mL', 236.5882365);
|
|
CALL insert_unit_conversion ('Cup (US)', 'Tbsp (US)', 16);
|
|
CALL insert_unit_conversion ('Cup (US)', 'Tbsp (US)', 16);
|
|
-CALL insert_unit_conversion ('Tbsp (US)', 'tsp (US)', 3);
|
|
|
|
|
|
+CALL insert_unit_conversion ('Cup (US)', 'tsp (US)', 48);
|
|
|
|
+CALL insert_unit_conversion ('Cup (US)', 'fl. oz. (US)', 8);
|
|
|
|
+CALL insert_unit_conversion ('Pint (US)', 'Cup (US)', 2);
|
|
|
|
+CALL insert_unit_conversion ('Quart (US)', 'Cup (US)', 4);
|
|
|
|
+CALL insert_unit_conversion ('Gallon (US)', 'Cup (US)', 16);
|
|
|
|
+SELECT * FROM conversions;
|
|
DO
|
|
DO
|
|
$$
|
|
$$
|
|
DECLARE
|
|
DECLARE
|
|
item record;
|
|
item record;
|
|
|
|
+ msg text;
|
|
|
|
+ expected numeric(14,7);
|
|
|
|
+ result numeric(14,7);
|
|
BEGIN
|
|
BEGIN
|
|
FOR item IN SELECT * FROM (VALUES
|
|
FOR item IN SELECT * FROM (VALUES
|
|
- ('Cup (US)', 'mL', '', 236.5875),
|
|
|
|
- ('Cup (US)', 'Tbsp (US)', '', 17),
|
|
|
|
- ('Tbsp (US)', 'tsp (US)', '', 3)
|
|
|
|
|
|
+ ('L', 'mL', '', 1000), -- *
|
|
|
|
+ ('mL', 'L', '', 1.0/1000),
|
|
|
|
+ ('Cup (US)', 'mL', '', 236.5882365),
|
|
|
|
+ ('mL', 'Cup (US)', '', 1/236.5882365), -- *
|
|
|
|
+ ('L', 'Cup (US)', '', 1000/236.5882365),
|
|
|
|
+ ('Cup (US)', 'Tbsp (US)', '', 16), -- *
|
|
|
|
+ ('mL', 'Tbsp (US)', '', 16/236.5882365),
|
|
|
|
+ ('Tbsp (US)', 'tsp (US)', '', 3), -- *
|
|
|
|
+ ('mL', 'tsp (US)', '', 16*3/236.5882365),
|
|
|
|
+ ('Pint (US)', 'fl. oz. (US)', '', 16), -- *
|
|
|
|
+ ('Pint (US)', 'Cup (US)', '', 2), -- *
|
|
|
|
+ ('Cup (US)', 'fl. oz. (US)', '', 8),
|
|
|
|
+ ('fl. oz. (US)', 'Tbsp (US)', '', 16*2/16),
|
|
|
|
+ ('fl. oz. (US)', 'tsp (US)', '', 16*2*3/16),
|
|
|
|
+ ('Quart (US)', 'fl. oz. (US)', '', 32), -- *
|
|
|
|
+ ('fl. oz. (US)', 'Quart (US)', '', 1.0/32),
|
|
|
|
+ ('Gallon (US)', 'fl. oz. (US)', '', 128), -- *
|
|
|
|
+ ('Gallon (US)', 'Pint (US)', '', 8),
|
|
|
|
+ ('Gallon (US)', 'Quart (US)', '', 4)
|
|
|
|
|
|
) AS tests(f,t,p,e) LOOP
|
|
) AS tests(f,t,p,e) LOOP
|
|
- IF convert_unit(item.f, item.t, item.p) != item.e THEN
|
|
|
|
- RAISE EXCEPTION ' convert_unit(''%'', ''%'', ''%'') != %', item.f, item.t, item.p, item.e;
|
|
|
|
- ELSE
|
|
|
|
- RAISE NOTICE 'convert_unit(''%'', ''%'', ''%'') = %', item.f, item.t, item.p, item.e;
|
|
|
|
- END IF;
|
|
|
|
|
|
+ BEGIN
|
|
|
|
+ SELECT convert_unit(item.f, item.t, item.p) INTO result;
|
|
|
|
+ SELECT item.e INTO expected;
|
|
|
|
+ ASSERT result = expected, 'convert_unit('''||item.f||''', '''||item.t||''', '''||item.p||''') = '||result||' != '||expected;
|
|
|
|
+ RAISE NOTICE ' convert_unit(''%'', ''%'', ''%'') = %', item.f, item.t, item.p, result;
|
|
|
|
+ EXCEPTION
|
|
|
|
+ WHEN assert_failure THEN
|
|
|
|
+ BEGIN
|
|
|
|
+ GET STACKED DIAGNOSTICS msg = MESSAGE_TEXT;
|
|
|
|
+ RAISE WARNING '%', msg;
|
|
|
|
+ END;
|
|
|
|
+ END;
|
|
END LOOP;
|
|
END LOOP;
|
|
|
|
+
|
|
END;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
$$ LANGUAGE plpgsql;
|
|
ROLLBACK;
|
|
ROLLBACK;
|
|
|
|
+
|