github.com/matrixorigin/matrixone@v0.7.0/pkg/vectorize/abs/abs_test.go (about)

     1  // Copyright 2022 Matrix Origin
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package abs
    16  
    17  import (
    18  	"testing"
    19  
    20  	"github.com/stretchr/testify/require"
    21  )
    22  
    23  func TestAbsUnsigned(t *testing.T) {
    24  	//Test values
    25  	nums := []uint8{1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1, 11, 2, 33, 22, 55, 44, 33, 22}
    26  	//Predefined Correct Values
    27  	absNums := []uint8{1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1, 11, 2, 33, 22, 55, 44, 33, 22}
    28  
    29  	//Init a new variable
    30  	newNums := make([]uint8, len(nums))
    31  	//Run abs function
    32  	newNums = absUnsigned(nums, newNums)
    33  
    34  	for i := range newNums {
    35  		require.Equal(t, absNums[i], newNums[i])
    36  	}
    37  }
    38  
    39  func TestAbsUint16(t *testing.T) {
    40  	//Test values
    41  	nums := []uint16{1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1, 11, 2, 33, 22, 55, 44, 33, 22}
    42  	//Predefined Correct Values
    43  	absNums := []uint16{1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1, 11, 2, 33, 22, 55, 44, 33, 22}
    44  
    45  	//Init a new variable
    46  	newNums := make([]uint16, len(nums))
    47  	//Run abs function
    48  	newNums = absUnsigned(nums, newNums)
    49  
    50  	for i := range newNums {
    51  		require.Equal(t, absNums[i], newNums[i])
    52  	}
    53  }
    54  
    55  func TestAbsUint32(t *testing.T) {
    56  	//Test values
    57  	nums := []uint32{1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1, 11, 2, 33, 22, 55, 44, 33, 22}
    58  	//Predefined Correct Values
    59  	absNums := []uint32{1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1, 11, 2, 33, 22, 55, 44, 33, 22}
    60  
    61  	//Init a new variable
    62  	newNums := make([]uint32, len(nums))
    63  	//Run abs function
    64  	newNums = absUnsigned(nums, newNums)
    65  
    66  	for i := range newNums {
    67  		require.Equal(t, absNums[i], newNums[i])
    68  	}
    69  }
    70  
    71  func TestAbsUint64(t *testing.T) {
    72  	//Test values
    73  	nums := []uint64{1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1, 11, 2, 33, 22, 55, 44, 33, 22}
    74  	//Predefined Correct Values
    75  	absNums := []uint64{1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1, 11, 2, 33, 22, 55, 44, 33, 22}
    76  
    77  	//Init a new variable
    78  	newNums := make([]uint64, len(nums))
    79  	//Run abs function
    80  	newNums = absUnsigned(nums, newNums)
    81  
    82  	for i := range newNums {
    83  		require.Equal(t, absNums[i], newNums[i])
    84  	}
    85  }
    86  
    87  func TestAbsInt8(t *testing.T) {
    88  	//Test values
    89  	nums := []int8{-11, 22, -33, 44, -55, -66, 77, -88, 99}
    90  	//Predefined Correct Values
    91  	absNums := []int8{11, 22, 33, 44, 55, 66, 77, 88, 99}
    92  
    93  	//Init a new variable
    94  	newNums := make([]int8, len(nums))
    95  	//Run abs function
    96  	newNums = absSigned(nums, newNums)
    97  
    98  	for i := range newNums {
    99  		require.Equal(t, absNums[i], newNums[i])
   100  	}
   101  }
   102  
   103  func TestAbsInt16(t *testing.T) {
   104  	//Test values
   105  	nums := []int16{-11, 22, -33, 44, -55, -66, 77, -88, 99}
   106  	//Predefined Correct Values
   107  	absNums := []int16{11, 22, 33, 44, 55, 66, 77, 88, 99}
   108  
   109  	//Init a new variable
   110  	newNums := make([]int16, len(nums))
   111  	//Run abs function
   112  	newNums = absSigned(nums, newNums)
   113  
   114  	for i := range newNums {
   115  		require.Equal(t, absNums[i], newNums[i])
   116  	}
   117  }
   118  
   119  func TestAbsInt32(t *testing.T) {
   120  	//Test values
   121  	nums := []int32{-111, 222, -333, 444, -555, 666, -777, 888, -99999}
   122  	//Predefined Correct Values
   123  	absNums := []int32{111, 222, 333, 444, 555, 666, 777, 888, 99999}
   124  
   125  	//Init a new variable
   126  	newNums := make([]int32, len(nums))
   127  	//Run abs function
   128  	newNums = absSigned(nums, newNums)
   129  
   130  	for i := range newNums {
   131  		require.Equal(t, absNums[i], newNums[i])
   132  	}
   133  }
   134  
   135  func TestAbsInt64(t *testing.T) {
   136  	//Test values
   137  	nums := []int64{-111, 222, -333, 444, -555, 666, -777, 888, -99999, -987654321}
   138  	//Predefined Correct Values
   139  	absNums := []int64{111, 222, 333, 444, 555, 666, 777, 888, 99999, 987654321}
   140  
   141  	//Init a new variable
   142  	newNums := make([]int64, len(nums))
   143  	//Run abs function
   144  	newNums = absSigned(nums, newNums)
   145  
   146  	for i := range newNums {
   147  		require.Equal(t, absNums[i], newNums[i])
   148  	}
   149  }
   150  
   151  func TestAbsFloat32(t *testing.T) {
   152  	//Test values
   153  	nums := []float32{1.5, -1.5, 2.5, -2.5, 1.2, 12.3, 123.4, 1234.5, 12345.6, 1234.567, -1.2, -12.3, -123.4, -1234.5, -12345.6}
   154  	//Predefined Correct Values
   155  	absNums := []float32{1.5, 1.5, 2.5, 2.5, 1.2, 12.3, 123.4, 1234.5, 12345.6, 1234.567, 1.2, 12.3, 123.4, 1234.5, 12345.6}
   156  
   157  	//Init a new variable
   158  	newNums := make([]float32, len(nums))
   159  	//Run abs function
   160  	newNums = absSigned(nums, newNums)
   161  
   162  	for i := range newNums {
   163  		require.Equal(t, absNums[i], newNums[i])
   164  	}
   165  }
   166  
   167  func TestAbsFloat64(t *testing.T) {
   168  	//Test values
   169  	nums := []float64{1.5, -1.5, 2.5, -2.5, 1.2, 12.3, 123.4, 1234.5, 12345.6, 1234.567, -1.2, -12.3, -123.4, -1234.5, -12345.6}
   170  	//Predefined Correct Values
   171  	absNums := []float64{1.5, 1.5, 2.5, 2.5, 1.2, 12.3, 123.4, 1234.5, 12345.6, 1234.567, 1.2, 12.3, 123.4, 1234.5, 12345.6}
   172  
   173  	//Init a new variable
   174  	newNums := make([]float64, len(nums))
   175  	//Run abs function
   176  	newNums = absSigned(nums, newNums)
   177  
   178  	for i := range newNums {
   179  		require.Equal(t, absNums[i], newNums[i])
   180  	}
   181  }