CREATE EXTENSION slim;
CREATE EXTENSION pacs;

SELECT pacs_reset_all_measures();

-- create a measure
SELECT pacs_create_measure('A');
-- increment it 3 times
SELECT pacs_increment_measure('A');
SELECT pacs_increment_measure('A');
SELECT pacs_increment_measure('A');
-- check measure value is 3
SELECT pacs_get_measure('A');
-- reset the measure
SELECT pacs_reset_measure('A');
-- should be 0 now
SELECT pacs_get_measure('A');
-- increment again
SELECT pacs_increment_measure('A');
-- should be 1
SELECT pacs_get_measure('A');
-- and drop the measure
SELECT pacs_drop_measure('A');

-- get stats from pacs (empty)
-- SELECT * FROM pacs_get_stats();
-- create 2 measures
SELECT pacs_create_measure('B');
SELECT pacs_create_measure('C');
-- expect 2 measures
-- SELECT * FROM pacs_get_stats();
-- drop one
SELECT pacs_drop_measure('B');
-- so result now is 1
-- SELECT * FROM pacs_get_stats();

--
-- SPECIAL CASES
--
-- measure A has been dropped already.
-- but it's not erroing, as expected.
SELECT pacs_drop_measure('A');

-- trying to get value for an inexisting measure
-- should ERROR
SELECT pacs_get_measure('absent');

-- reseting an inexsting measure
-- but it's not erroing, as expected
SELECT pacs_reset_measure('absent');
-- the measure still does not exist
-- so we have an error
SELECT pacs_get_measure('absent');
-- however increment always create the measure if it does not exists
SELECT pacs_increment_measure('absent');
-- and now we can fetch value (should be 1)
SELECT pacs_get_measure('absent');
-- and we drop the "absent" measure (yeah, it's confusing)
SELECT pacs_drop_measure('absent');
