aboutsummaryrefslogtreecommitdiff
path: root/test/unit/path.moon
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/path.moon')
-rw-r--r--test/unit/path.moon51
1 files changed, 51 insertions, 0 deletions
diff --git a/test/unit/path.moon b/test/unit/path.moon
new file mode 100644
index 0000000000..90142a8cbb
--- /dev/null
+++ b/test/unit/path.moon
@@ -0,0 +1,51 @@
+{:cimport, :internalize, :eq, :ffi, :lib, :cstr, :to_cstr} = require 'test.unit.helpers'
+
+path = lib
+
+ffi.cdef [[
+typedef enum file_comparison {
+ FPC_SAME = 1, FPC_DIFF = 2, FPC_NOTX = 4, FPC_DIFFX = 6, FPC_SAMEX = 7
+} FileComparison;
+FileComparison fullpathcmp(char_u *s1, char_u *s2, int checkname);
+]]
+
+-- import constants parsed by ffi
+{:FPC_SAME, :FPC_DIFF, :FPC_NOTX, :FPC_DIFFX, :FPC_SAMEX} = path
+
+describe 'path function', ->
+ describe 'fullpathcmp', ->
+
+ fullpathcmp = (s1, s2, cn) ->
+ s1 = to_cstr s1
+ s2 = to_cstr s2
+ path.fullpathcmp s1, s2, cn or 0
+
+ f1 = 'f1.o'
+ f2 = 'f2.o'
+
+ before_each ->
+ -- create the three files that will be used in this spec
+ (io.open f1, 'w').close!
+ (io.open f2, 'w').close!
+
+ after_each ->
+ os.remove f1
+ os.remove f2
+
+ it 'returns FPC_SAME when passed the same file', ->
+ eq FPC_SAME, (fullpathcmp f1, f1)
+
+ it 'returns FPC_SAMEX when files that dont exist and have same name', ->
+ eq FPC_SAMEX, (fullpathcmp 'null.txt', 'null.txt', true)
+
+ it 'returns FPC_NOTX when files that dont exist', ->
+ eq FPC_NOTX, (fullpathcmp 'null.txt', 'null.txt')
+
+ it 'returns FPC_DIFF when passed different files', ->
+ eq FPC_DIFF, (fullpathcmp f1, f2)
+ eq FPC_DIFF, (fullpathcmp f2, f1)
+
+ it 'returns FPC_DIFFX if only one does not exist', ->
+ eq FPC_DIFFX, (fullpathcmp f1, 'null.txt')
+ eq FPC_DIFFX, (fullpathcmp 'null.txt', f1)
+