postgres-basename-dirname/basename_tests.sql

18 lines
859 B
SQL

CREATE TABLE testdata (name TEXT, direxpected TEXT, baseexpected TEXT);
INSERT INTO testdata VALUES ('/foo/bar', '/foo', 'bar');
INSERT INTO testdata VALUES ('/', '/', '');
INSERT INTO testdata VALUES ('foo', '', 'foo');
INSERT INTO testdata VALUES ('////foo', '////' ,'foo');
INSERT INTO testdata VALUES ('//foo//bar', '//foo' ,'bar');
INSERT INTO testdata VALUES ('/foo/bar', '/foo', 'bar');
INSERT INTO testdata VALUES ('/foo/bar/', '/foo/bar', '');
SELECT name, basename(name) AS basetest, baseexpected, dirname(name) AS dirtest, direxpected,
CASE WHEN basename(name) = baseexpected THEN 'PASS' ELSE 'FAIL' END AS base,
CASE WHEN dirname(name) = direxpected THEN 'PASS' ELSE 'FAIL' END AS dir FROM testdata;
DROP TABLE testdata;
DROP FUNCTION IF EXISTS basename(text, text, char);
DROP FUNCTION IF EXISTS dirname(text, char);