go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/core/resources/time_unit_test.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package resources
     5  
     6  import (
     7  	"testing"
     8  	"time"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  	"github.com/stretchr/testify/require"
    12  	"go.mondoo.com/cnquery/llx"
    13  )
    14  
    15  func TestTime_Conversions(t *testing.T) {
    16  	mtime := mqlTime{}
    17  	t.Run("back and forth duration (1 hour)", func(t *testing.T) {
    18  		hour, err := mtime.hour()
    19  		require.NoError(t, err)
    20  		assert.Equal(t, llx.DurationToTime(60*60), *hour, "time.hour returns an hour in time")
    21  
    22  		rd := llx.TimeData(*hour)
    23  		res := rd.Result()
    24  		require.Empty(t, res.Error, "no error converting raw data to a primitive")
    25  		back := res.Data.RawData()
    26  		assert.Equal(t, hour, back.Value, "time.hour converts values to primitive and back and remains the same")
    27  		assert.Equal(t, llx.DurationToTime(60*60), *(back.Value.(*time.Time)), "time.hour after conversion to primitive and back is still an hour")
    28  	})
    29  
    30  	t.Run("back and forth duration (1sec)", func(t *testing.T) {
    31  		second, err := mtime.second()
    32  		require.NoError(t, err)
    33  		assert.Equal(t, llx.DurationToTime(1), *second, "time.second returns a second in time")
    34  
    35  		rd := llx.TimeData(*second)
    36  		res := rd.Result()
    37  		require.Empty(t, res.Error, "no error converting raw data to a primitive")
    38  		back := res.Data.RawData()
    39  		assert.Equal(t, second, back.Value, "time.second converts values to primitive and back and remains the same")
    40  		assert.Equal(t, llx.DurationToTime(1), *(back.Value.(*time.Time)), "time.second after conversion to primitive and back is still a second")
    41  	})
    42  }