You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							93 lines
						
					
					
						
							1.7 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							93 lines
						
					
					
						
							1.7 KiB
						
					
					
				| package mount | |
| 
 | |
| import ( | |
| 	"github.com/seaweedfs/seaweedfs/weed/util" | |
| 	"testing" | |
| ) | |
| 
 | |
| func TestInodeEntry_removeOnePath(t *testing.T) { | |
| 	tests := []struct { | |
| 		name  string | |
| 		entry InodeEntry | |
| 		p     util.FullPath | |
| 		want  bool | |
| 		count int | |
| 	}{ | |
| 		{ | |
| 			name: "actual case", | |
| 			entry: InodeEntry{ | |
| 				paths: []util.FullPath{"/pjd/nx", "/pjd/n0"}, | |
| 			}, | |
| 			p:     "/pjd/nx", | |
| 			want:  true, | |
| 			count: 1, | |
| 		}, | |
| 		{ | |
| 			name:  "empty", | |
| 			entry: InodeEntry{}, | |
| 			p:     "x", | |
| 			want:  false, | |
| 			count: 0, | |
| 		}, | |
| 		{ | |
| 			name: "single", | |
| 			entry: InodeEntry{ | |
| 				paths: []util.FullPath{"/x"}, | |
| 			}, | |
| 			p:     "/x", | |
| 			want:  true, | |
| 			count: 0, | |
| 		}, | |
| 		{ | |
| 			name: "first", | |
| 			entry: InodeEntry{ | |
| 				paths: []util.FullPath{"/x", "/y", "/z"}, | |
| 			}, | |
| 			p:     "/x", | |
| 			want:  true, | |
| 			count: 2, | |
| 		}, | |
| 		{ | |
| 			name: "middle", | |
| 			entry: InodeEntry{ | |
| 				paths: []util.FullPath{"/x", "/y", "/z"}, | |
| 			}, | |
| 			p:     "/y", | |
| 			want:  true, | |
| 			count: 2, | |
| 		}, | |
| 		{ | |
| 			name: "last", | |
| 			entry: InodeEntry{ | |
| 				paths: []util.FullPath{"/x", "/y", "/z"}, | |
| 			}, | |
| 			p:     "/z", | |
| 			want:  true, | |
| 			count: 2, | |
| 		}, | |
| 		{ | |
| 			name: "not found", | |
| 			entry: InodeEntry{ | |
| 				paths: []util.FullPath{"/x", "/y", "/z"}, | |
| 			}, | |
| 			p:     "/t", | |
| 			want:  false, | |
| 			count: 3, | |
| 		}, | |
| 	} | |
| 	for _, tt := range tests { | |
| 		t.Run(tt.name, func(t *testing.T) { | |
| 			if got := tt.entry.removeOnePath(tt.p); got != tt.want { | |
| 				t.Errorf("removeOnePath() = %v, want %v", got, tt.want) | |
| 			} | |
| 			if tt.count != len(tt.entry.paths) { | |
| 				t.Errorf("removeOnePath path count = %v, want %v", len(tt.entry.paths), tt.count) | |
| 			} | |
| 			for i, p := range tt.entry.paths { | |
| 				if p == tt.p { | |
| 					t.Errorf("removeOnePath found path still exists at %v, %v", i, p) | |
| 				} | |
| 			} | |
| 		}) | |
| 	} | |
| }
 |