Skip to content

Commit 1c0eac0

Browse files
committed
chore: files sizes
1 parent f237afe commit 1c0eac0

File tree

4 files changed

+319
-10
lines changed

4 files changed

+319
-10
lines changed

files/files.go

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ func (f *Files) RemoveAllDir(dirPath string) error {
220220
return os.RemoveAll(dirPath)
221221
}
222222

223-
// ReadFileByLine reads and returns the contents of a file specified by filePath line by line as a slice of strings.
223+
// ReadFileLines reads and returns the contents of a file specified by filePath line by line as a slice of strings.
224224
func (f *Files) ReadFileLines(filePath string, opts ...Delimiter) ([]string, error) {
225225
file, err := os.Open(filePath)
226226
if err != nil {
@@ -253,6 +253,7 @@ func (f *Files) ReadFileLines(filePath string, opts ...Delimiter) ([]string, err
253253
return lines, nil
254254
}
255255

256+
// ReadFileByLineBytes reads and returns the contents of a file specified by filePath line by line as a slice of byte slices.
256257
func (f *Files) ReadFileLinesBytes(filePath string, opts ...Delimiter) ([][]byte, error) {
257258
file, err := os.Open(filePath)
258259
if err != nil {
@@ -284,3 +285,63 @@ func (f *Files) ReadFileLinesBytes(filePath string, opts ...Delimiter) ([][]byte
284285

285286
return lines, nil
286287
}
288+
289+
// CompareSize compares the sizes of two files and returns true if they are equal.
290+
func (f *Files) CompareSize(file1, file2 string) (bool, error) {
291+
info1, err := os.Stat(file1)
292+
if err != nil {
293+
return false, err
294+
}
295+
296+
info2, err := os.Stat(file2)
297+
if err != nil {
298+
return false, err
299+
}
300+
301+
return info1.Size() == info2.Size(), nil
302+
}
303+
304+
// FileSizeBytes returns the size of a file in bytes.
305+
func (f *Files) FileSizeBytes(filePath string) (int64, error) {
306+
info, err := os.Stat(filePath)
307+
if err != nil {
308+
return 0, err
309+
}
310+
return info.Size(), nil
311+
}
312+
313+
// FileSizeKB returns the size of a file in kilobytes.
314+
func (f *Files) FileSizeKB(filePath string) (int64, error) {
315+
info, err := os.Stat(filePath)
316+
if err != nil {
317+
return 0, err
318+
}
319+
return info.Size() / 1024, nil
320+
}
321+
322+
// FileSizeMB returns the size of a file in megabytes.
323+
func (f *Files) FileSizeMB(filePath string) (int64, error) {
324+
info, err := os.Stat(filePath)
325+
if err != nil {
326+
return 0, err
327+
}
328+
return info.Size() / 1024 / 1024, nil
329+
}
330+
331+
// FileSizeGB returns the size of a file in gigabytes.
332+
func (f *Files) FileSizeGB(filePath string) (int64, error) {
333+
info, err := os.Stat(filePath)
334+
if err != nil {
335+
return 0, err
336+
}
337+
return info.Size() / 1024 / 1024 / 1024, nil
338+
}
339+
340+
// FileSizeTB returns the size of a file in terabytes.
341+
func (f *Files) FileSizeTB(filePath string) (int64, error) {
342+
info, err := os.Stat(filePath)
343+
if err != nil {
344+
return 0, err
345+
}
346+
return info.Size() / 1024 / 1024 / 1024 / 1024, nil
347+
}

files/files_test.go

Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -594,3 +594,248 @@ func TestRemoveAllDir(t *testing.T) {
594594
t.Errorf("Directory should have been removed: %s", testDir)
595595
}
596596
}
597+
598+
func TestFileSize(t *testing.T) {
599+
fm := New()
600+
testDir, err := os.MkdirTemp("", "testFileSize")
601+
if err != nil {
602+
t.Fatalf("Failed to create temp dir: %v", err)
603+
}
604+
defer os.RemoveAll(testDir)
605+
606+
testFile := filepath.Join(testDir, "testFile.txt")
607+
data := []byte("test data")
608+
if err := os.WriteFile(testFile, data, 0644); err != nil {
609+
t.Fatalf("Failed to write test file: %v", err)
610+
}
611+
612+
size, err := fm.FileSizeBytes(testFile)
613+
if err != nil {
614+
t.Fatalf("Failed to get file size: %v", err)
615+
}
616+
617+
if size != int64(len(data)) {
618+
t.Errorf("Expected file size: %d, got: %d", len(data), size)
619+
}
620+
}
621+
622+
func TestCompareSize(t *testing.T) {
623+
fm := New()
624+
testDir, err := os.MkdirTemp("", "testCompareSize")
625+
if err != nil {
626+
t.Fatalf("Failed to create temp dir: %v", err)
627+
}
628+
defer os.RemoveAll(testDir)
629+
630+
testFile1 := filepath.Join(testDir, "testFile1.txt")
631+
data1 := []byte("test data")
632+
if err := os.WriteFile(testFile1, data1, 0644); err != nil {
633+
t.Fatalf("Failed to write test file1: %v", err)
634+
}
635+
636+
testFile2 := filepath.Join(testDir, "testFile2.txt")
637+
data2 := []byte("test data")
638+
if err := os.WriteFile(testFile2, data2, 0644); err != nil {
639+
t.Fatalf("Failed to write test file2: %v", err)
640+
}
641+
642+
ok, err := fm.CompareSize(testFile1, testFile2)
643+
if err != nil {
644+
t.Fatalf("Failed to compare file sizes: %v", err)
645+
}
646+
647+
if !ok {
648+
t.Errorf("File sizes should match: %s, %s", testFile1, testFile2)
649+
}
650+
651+
}
652+
653+
func TestReadFileLines(t *testing.T) {
654+
fm := New()
655+
testDir, err := os.MkdirTemp("", "testReadFileLines")
656+
if err != nil {
657+
t.Fatalf("Failed to create temp dir: %v", err)
658+
}
659+
defer os.RemoveAll(testDir)
660+
661+
testFile := filepath.Join(testDir, "testFile.txt")
662+
data := []byte("line1\nline2\nline3")
663+
if err := os.WriteFile(testFile, data, 0644); err != nil {
664+
t.Fatalf("Failed to write test file: %v", err)
665+
}
666+
667+
lines, err := fm.ReadFileLines(testFile)
668+
if err != nil {
669+
t.Fatalf("Failed to read file lines: %v", err)
670+
}
671+
672+
expectedLines := []string{"line1", "line2", "line3"}
673+
if len(lines) != len(expectedLines) {
674+
t.Fatalf("Expected %d lines, got %d", len(expectedLines), len(lines))
675+
}
676+
677+
for i, line := range lines {
678+
if line != expectedLines[i] {
679+
t.Errorf("Expected line: %s, got: %s", expectedLines[i], line)
680+
}
681+
}
682+
683+
}
684+
685+
func TestReadFileLinesBytes(t *testing.T) {
686+
fm := New()
687+
testDir, err := os.MkdirTemp("", "testReadFileLinesBytes")
688+
if err != nil {
689+
t.Fatalf("Failed to create temp dir: %v", err)
690+
}
691+
defer os.RemoveAll(testDir)
692+
693+
testFile := filepath.Join(testDir, "testFile.txt")
694+
data := []byte("line1\nline2\nline3")
695+
if err := os.WriteFile(testFile, data, 0644); err != nil {
696+
t.Fatalf("Failed to write test file: %v", err)
697+
}
698+
699+
lines, err := fm.ReadFileLinesBytes(testFile)
700+
if err != nil {
701+
t.Fatalf("Failed to read file lines: %v", err)
702+
}
703+
704+
expectedLines := [][]byte{[]byte("line1"), []byte("line2"), []byte("line3")}
705+
if len(lines) != len(expectedLines) {
706+
t.Fatalf("Expected %d lines, got %d", len(expectedLines), len(lines))
707+
}
708+
709+
for i, line := range lines {
710+
if string(line) != string(expectedLines[i]) {
711+
t.Errorf("Expected line: %s, got: %s", expectedLines[i], line)
712+
}
713+
}
714+
}
715+
716+
func TestReadFileLinesDelimiter(t *testing.T) {
717+
fm := New()
718+
testDir, err := os.MkdirTemp("", "testReadFileLinesDelimiter")
719+
if err != nil {
720+
t.Fatalf("Failed to create temp dir: %v", err)
721+
}
722+
defer os.RemoveAll(testDir)
723+
724+
testFile := filepath.Join(testDir, "testFile.txt")
725+
data := []byte("line1\nline2\nline3")
726+
if err := os.WriteFile(testFile, data, 0644); err != nil {
727+
t.Fatalf("Failed to write test file: %v", err)
728+
}
729+
730+
lines, err := fm.ReadFileLines(testFile, SLASH_N)
731+
if err != nil {
732+
t.Fatalf("Failed to read file lines: %v", err)
733+
}
734+
735+
expectedLines := []string{"line1", "line2", "line3"}
736+
if len(lines) != len(expectedLines) {
737+
t.Fatalf("Expected %d lines, got %d", len(expectedLines), len(lines))
738+
}
739+
740+
for i, line := range lines {
741+
if line != expectedLines[i] {
742+
t.Errorf("Expected line: %s, got: %s", expectedLines[i], line)
743+
}
744+
}
745+
}
746+
747+
func TestFileSizeMB(t *testing.T) {
748+
fm := New()
749+
testDir, err := os.MkdirTemp("", "testFileSizeMB")
750+
if err != nil {
751+
t.Fatalf("Failed to create temp dir: %v", err)
752+
}
753+
defer os.RemoveAll(testDir)
754+
755+
testFile := filepath.Join(testDir, "testFile.txt")
756+
data := []byte("test data")
757+
if err := os.WriteFile(testFile, data, 0644); err != nil {
758+
t.Fatalf("Failed to write test file: %v", err)
759+
}
760+
761+
size, err := fm.FileSizeMB(testFile)
762+
if err != nil {
763+
t.Fatalf("Failed to get file size: %v", err)
764+
}
765+
766+
if size != 0 {
767+
t.Errorf("Expected file size: 0 MB, got: %d MB", size)
768+
}
769+
}
770+
771+
func TestFileSizeGB(t *testing.T) {
772+
fm := New()
773+
testDir, err := os.MkdirTemp("", "testFileSizeGB")
774+
if err != nil {
775+
t.Fatalf("Failed to create temp dir: %v", err)
776+
}
777+
defer os.RemoveAll(testDir)
778+
779+
testFile := filepath.Join(testDir, "testFile.txt")
780+
data := []byte("test data")
781+
if err := os.WriteFile(testFile, data, 0644); err != nil {
782+
t.Fatalf("Failed to write test file: %v", err)
783+
}
784+
785+
size, err := fm.FileSizeGB(testFile)
786+
if err != nil {
787+
t.Fatalf("Failed to get file size: %v", err)
788+
}
789+
790+
if size != 0 {
791+
t.Errorf("Expected file size: 0 GB, got: %d GB", size)
792+
}
793+
}
794+
795+
func TestFileSizeKB(t *testing.T) {
796+
fm := New()
797+
testDir, err := os.MkdirTemp("", "testFileSizeKB")
798+
if err != nil {
799+
t.Fatalf("Failed to create temp dir: %v", err)
800+
}
801+
defer os.RemoveAll(testDir)
802+
803+
testFile := filepath.Join(testDir, "testFile.txt")
804+
data := []byte("test data")
805+
if err := os.WriteFile(testFile, data, 0644); err != nil {
806+
t.Fatalf("Failed to write test file: %v", err)
807+
}
808+
809+
size, err := fm.FileSizeKB(testFile)
810+
if err != nil {
811+
t.Fatalf("Failed to get file size: %v", err)
812+
}
813+
814+
if size != 0 {
815+
t.Errorf("Expected file size: 0 KB, got: %d KB", size)
816+
}
817+
}
818+
819+
func TestFileSizeTB(t *testing.T) {
820+
fm := New()
821+
testDir, err := os.MkdirTemp("", "testFileSizeTB")
822+
if err != nil {
823+
t.Fatalf("Failed to create temp dir: %v", err)
824+
}
825+
defer os.RemoveAll(testDir)
826+
827+
testFile := filepath.Join(testDir, "testFile.txt")
828+
data := []byte("test data")
829+
if err := os.WriteFile(testFile, data, 0644); err != nil {
830+
t.Fatalf("Failed to write test file: %v", err)
831+
}
832+
833+
size, err := fm.FileSizeTB(testFile)
834+
if err != nil {
835+
t.Fatalf("Failed to get file size: %v", err)
836+
}
837+
838+
if size != 0 {
839+
t.Errorf("Expected file size: 0 TB, got: %d TB", size)
840+
}
841+
}

slices/slices_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,8 @@ func TestRemoveEDTS(t *testing.T) {
194194
expected []string
195195
}{
196196
{[]string{" duplicate ", "DUPLICATE", " unique "}, []string{"duplicate", "unique"}},
197-
// Note: Adjust the expected results based on the actual implementation and behavior of RemoveEDTS method
197+
{[]string{"", " ", " "}, []string{}},
198+
{[]string{" ", " ", " "}, []string{}},
198199
}
199200

200201
for _, test := range tests {

strings/strings.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ func (s *Strings) GenerateUniqueSlug(input string) string {
3333
return slug
3434
}
3535

36+
// ToCamelCase converts a string to camel case
37+
func (s *Strings) ToCamelCase(str string) string {
38+
return s.toCamelCase(str)
39+
}
40+
3641
func (s *Strings) toCamelCase(str string) string {
3742
reg, _ := regexp.Compile("[^a-zA-Z0-9]+")
3843
processedString := reg.ReplaceAllString(str, " ")
@@ -50,9 +55,9 @@ func (s *Strings) toCamelCase(str string) string {
5055
return strings.Join(words, "")
5156
}
5257

53-
// ToCamelCase converts a string to camel case
54-
func (s *Strings) ToCamelCase(str string) string {
55-
return s.toCamelCase(str)
58+
// ToSnakeCase converts a string to snake case
59+
func (s *Strings) ToSnakeCase(str string) string {
60+
return s.toSnakeCase(str)
5661
}
5762

5863
func (s *Strings) toSnakeCase(str string) string {
@@ -63,11 +68,6 @@ func (s *Strings) toSnakeCase(str string) string {
6368
return strings.ToLower(str)
6469
}
6570

66-
// ToSnakeCase converts a string to snake case
67-
func (s *Strings) ToSnakeCase(str string) string {
68-
return s.toSnakeCase(str)
69-
}
70-
7171
// RemoveSpecialChars removes special chars
7272
func (s *Strings) RemoveSpecialChars(str string) string {
7373
return s.removeSpecialChars(str)
@@ -159,6 +159,7 @@ func (s *Strings) RandomStrE(length int) string {
159159
for i := range b {
160160
b[i] = charset[seededRand.Intn(len(charset))]
161161
}
162+
162163
return string(b)
163164
}
164165

@@ -170,5 +171,6 @@ func (s *Strings) RandomStr(length int) string {
170171
str = re.ReplaceAllString(str, "")
171172
result += str
172173
}
174+
173175
return result[:length]
174176
}

0 commit comments

Comments
 (0)