github.com/mithrandie/csvq@v1.18.1/lib/query/uncommitted_views_test.go (about)

     1  package query
     2  
     3  import (
     4  	"reflect"
     5  	"sync"
     6  	"testing"
     7  )
     8  
     9  var preCreatedFileInfo = &FileInfo{Path: "pre_created.txt"}
    10  var preUpdatedFileInfo = &FileInfo{Path: "pre_updated.txt"}
    11  
    12  func TestUncommittedViewMap_SetForCreatedView(t *testing.T) {
    13  	m := &UncommittedViews{
    14  		mtx: &sync.RWMutex{},
    15  		Created: map[string]*FileInfo{
    16  			"PRE_CREATED.TXT": {Path: "pre_created.txt"},
    17  		},
    18  		Updated: map[string]*FileInfo{
    19  			"PRE_UPDATED.TXT": {Path: "pre_updated.txt"},
    20  		},
    21  	}
    22  
    23  	info := &FileInfo{
    24  		Path: "create.txt",
    25  	}
    26  	expect := &UncommittedViews{
    27  		mtx: &sync.RWMutex{},
    28  		Created: map[string]*FileInfo{
    29  			"PRE_CREATED.TXT": {Path: "pre_created.txt"},
    30  			"CREATE.TXT":      {Path: "create.txt"},
    31  		},
    32  		Updated: map[string]*FileInfo{
    33  			"PRE_UPDATED.TXT": {Path: "pre_updated.txt"},
    34  		},
    35  	}
    36  	m.SetForCreatedView(info)
    37  	if !reflect.DeepEqual(m, expect) {
    38  		t.Errorf("map = %v, want %v", m, expect)
    39  	}
    40  
    41  	m.SetForCreatedView(preCreatedFileInfo)
    42  	if !reflect.DeepEqual(m, expect) {
    43  		t.Errorf("map = %v, want %v", m, expect)
    44  	}
    45  
    46  	m.SetForCreatedView(preUpdatedFileInfo)
    47  	if !reflect.DeepEqual(m, expect) {
    48  		t.Errorf("map = %v, want %v", m, expect)
    49  	}
    50  }
    51  
    52  func TestUncommittedViewMap_SetForUpdatedView(t *testing.T) {
    53  	m := &UncommittedViews{
    54  		mtx: &sync.RWMutex{},
    55  		Created: map[string]*FileInfo{
    56  			"PRE_CREATED.TXT": {Path: "pre_created.txt"},
    57  		},
    58  		Updated: map[string]*FileInfo{
    59  			"PRE_UPDATED.TXT": {Path: "pre_updated.txt"},
    60  		},
    61  	}
    62  
    63  	info := &FileInfo{
    64  		Path: "update.txt",
    65  	}
    66  	expect := &UncommittedViews{
    67  		mtx: &sync.RWMutex{},
    68  		Created: map[string]*FileInfo{
    69  			"PRE_CREATED.TXT": {Path: "pre_created.txt"},
    70  		},
    71  		Updated: map[string]*FileInfo{
    72  			"PRE_UPDATED.TXT": {Path: "pre_updated.txt"},
    73  			"UPDATE.TXT":      {Path: "update.txt"},
    74  		},
    75  	}
    76  	m.SetForUpdatedView(info)
    77  	if !reflect.DeepEqual(m, expect) {
    78  		t.Errorf("map = %v, want %v", m, expect)
    79  	}
    80  
    81  	m.SetForUpdatedView(preCreatedFileInfo)
    82  	if !reflect.DeepEqual(m, expect) {
    83  		t.Errorf("map = %v, want %v", m, expect)
    84  	}
    85  
    86  	m.SetForUpdatedView(preUpdatedFileInfo)
    87  	if !reflect.DeepEqual(m, expect) {
    88  		t.Errorf("map = %v, want %v", m, expect)
    89  	}
    90  }
    91  
    92  func TestUncommittedViewMap_Unset(t *testing.T) {
    93  	m := &UncommittedViews{
    94  		mtx: &sync.RWMutex{},
    95  		Created: map[string]*FileInfo{
    96  			"PRE_CREATED.TXT": {Path: "pre_created.txt"},
    97  		},
    98  		Updated: map[string]*FileInfo{
    99  			"PRE_UPDATED.TXT": {Path: "pre_updated.txt"},
   100  		},
   101  	}
   102  
   103  	expect := &UncommittedViews{
   104  		mtx:     &sync.RWMutex{},
   105  		Created: map[string]*FileInfo{},
   106  		Updated: map[string]*FileInfo{
   107  			"PRE_UPDATED.TXT": {Path: "pre_updated.txt"},
   108  		},
   109  	}
   110  
   111  	m.Unset(preCreatedFileInfo)
   112  	if !reflect.DeepEqual(m, expect) {
   113  		t.Errorf("map = %v, want %v", m, expect)
   114  	}
   115  
   116  	expect = &UncommittedViews{
   117  		mtx:     &sync.RWMutex{},
   118  		Created: map[string]*FileInfo{},
   119  		Updated: map[string]*FileInfo{},
   120  	}
   121  	m.Unset(preUpdatedFileInfo)
   122  	if !reflect.DeepEqual(m, expect) {
   123  		t.Errorf("map = %v, want %v", m, expect)
   124  	}
   125  }
   126  
   127  func TestUncommittedViewMap_IsEmpty(t *testing.T) {
   128  	var expect bool
   129  
   130  	m := &UncommittedViews{
   131  		mtx: &sync.RWMutex{},
   132  		Created: map[string]*FileInfo{
   133  			"PRE_CREATED.TXT": {Path: "pre_created.txt"},
   134  		},
   135  	}
   136  	expect = false
   137  	result := m.IsEmpty()
   138  	if result != expect {
   139  		t.Errorf("result = %t, want %t", result, expect)
   140  	}
   141  
   142  	m = &UncommittedViews{
   143  		mtx: &sync.RWMutex{},
   144  		Updated: map[string]*FileInfo{
   145  			"PRE_UPDATED.TXT": {Path: "pre_updated.txt"},
   146  		},
   147  	}
   148  	expect = false
   149  	result = m.IsEmpty()
   150  	if result != expect {
   151  		t.Errorf("result = %t, want %t", result, expect)
   152  	}
   153  
   154  	m = &UncommittedViews{
   155  		mtx: &sync.RWMutex{},
   156  	}
   157  	expect = true
   158  	result = m.IsEmpty()
   159  	if result != expect {
   160  		t.Errorf("result = %t, want %t", result, expect)
   161  	}
   162  }