1
0
mirror of https://github.com/minio/mc.git synced 2025-11-10 13:42:32 +03:00
Files
mc/pkg/ioutils/ioutils_test.go

83 lines
2.3 KiB
Go

/*
* MinIO Cloud Storage, (C) 2016 MinIO, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ioutils_test
import (
"io/ioutil"
"os"
"testing"
"time"
"github.com/minio/mc/pkg/ioutils"
. "gopkg.in/check.v1"
)
func Test(t *testing.T) { TestingT(t) }
type MySuite struct{}
var _ = Suite(&MySuite{})
func (s *MySuite) TestIoutils(c *C) {
path, err := ioutil.TempDir(os.TempDir(), "minio-ioutils_test")
c.Assert(err, IsNil)
defer os.RemoveAll(path)
status, err := ioutils.IsDirEmpty(path)
c.Assert(err, IsNil)
c.Assert(status, Equals, true)
}
// Test for ParseDurationTime. Validates the returned value
// for given time value in days, hours and minute format.
func TestParseDurationTime(t *testing.T) {
testCases := []struct {
timeValue string
expected time.Duration
err string
}{
// Test 1: empty string as input
{"", 0, "time: invalid duration "},
// Test 2: Input string contains 4 day, 10 hour and 3 minutes
{"4d10h3m", 381780000000000, ""},
// Test 3: Input string contains 10 day and 3 hours
{"10d3h", 874800000000000, ""},
// Test 4: Input string contains minutes and days
{"3m7d", 604980000000000, ""},
// Test 5: Input string contains unknown unit
{"4a3d", 0, "time: unknown unit a in duration 4a3d"},
// Test 6: Input string contains fractional day
{"1.5d", 129600000000000, ""},
// Test 6: Input string contains fractional day and hour
{"2.5d1.5h", 221400000000000, ""},
// Test 7: Input string contains fractional day , hour and minute
{"2.5d1.5h3.5m", 221610000000000, ""},
}
for _, testCase := range testCases {
myVal, err := ioutils.ParseDurationTime(testCase.timeValue)
if err != nil && err.Error() != testCase.err {
t.Error()
}
if myVal != testCase.expected {
t.Error()
}
}
}