+++ /dev/null
-// Copyright (c) 2014-2015 The Notify Authors. All rights reserved.
-// Use of this source code is governed by the MIT license that can be
-// found in the LICENSE file.
-
-// +build darwin,!kqueue
-
-package notify
-
-import (
- "reflect"
- "testing"
-)
-
-func TestSplitflags(t *testing.T) {
- cases := [...]struct {
- set uint32
- flags []uint32
- }{
- {0, nil},
- {0xD, []uint32{0x1, 0x4, 0x8}},
- {0x0010 | 0x0040 | 0x0080 | 0x01000, []uint32{0x0010, 0x0040, 0x0080, 0x01000}},
- {0x40000 | 0x00100 | 0x00200, []uint32{0x00100, 0x00200, 0x40000}},
- }
- for i, cas := range cases {
- if flags := splitflags(cas.set); !reflect.DeepEqual(flags, cas.flags) {
- t.Errorf("want flags=%v; got %v (i=%d)", cas.flags, flags, i)
- }
- }
-}
-
-func TestWatchStrip(t *testing.T) {
- const (
- create = uint32(FSEventsCreated)
- remove = uint32(FSEventsRemoved)
- rename = uint32(FSEventsRenamed)
- write = uint32(FSEventsModified)
- inode = uint32(FSEventsInodeMetaMod)
- owner = uint32(FSEventsChangeOwner)
- )
- cases := [...][]struct {
- path string
- flag uint32
- diff uint32
- }{
- // 1.
- {
- {"file", create | write, create | write},
- {"file", create | write | inode, write | inode},
- },
- // 2.
- {
- {"file", create, create},
- {"file", create | remove, remove},
- {"file", create | remove, create},
- },
- // 3.
- {
- {"file", create | write, create | write},
- {"file", create | write | owner, write | owner},
- },
- // 4.
- {
- {"file", create | write, create | write},
- {"file", write | inode, write | inode},
- {"file", remove | write | inode, remove},
- },
- {
- {"file", remove | write | inode, remove},
- },
- }
-Test:
- for i, cas := range cases {
- if len(cas) == 0 {
- t.Log("skipped")
- continue
- }
- w := &watch{prev: make(map[string]uint32)}
- for j, cas := range cas {
- if diff := w.strip(cas.path, cas.flag); diff != cas.diff {
- t.Errorf("want diff=%v; got %v (i=%d, j=%d)", Event(cas.diff),
- Event(diff), i, j)
- continue Test
- }
- }
- }
-}
-
-// Test for cases 3) and 5) with shadowed write&create events.
-//
-// See comment for (flagdiff).diff method.
-func TestWatcherShadowedWriteCreate(t *testing.T) {
- w := NewWatcherTest(t, "testdata/vfs.txt")
- defer w.Close()
-
- cases := [...]WCase{
- // i=0
- create(w, "src/github.com/rjeczalik/fs/.fs.go.swp"),
- // i=1
- write(w, "src/github.com/rjeczalik/fs/.fs.go.swp", []byte("XD")),
- // i=2
- write(w, "src/github.com/rjeczalik/fs/.fs.go.swp", []byte("XD")),
- // i=3
- remove(w, "src/github.com/rjeczalik/fs/.fs.go.swp"),
- // i=4
- create(w, "src/github.com/rjeczalik/fs/.fs.go.swp"),
- // i=5
- write(w, "src/github.com/rjeczalik/fs/.fs.go.swp", []byte("XD")),
- }
-
- w.ExpectAny(cases[:5]) // BUG(rjeczalik): #62
-}