1
0
mirror of https://github.com/MontFerret/ferret.git synced 2025-04-07 07:19:58 +02:00
ferret/pkg/runtime/core/helpers.go
Tim Voronov 2643321e0f
Migration to lab (#526)
* Switched to Lab for e2e tests

* Switched to binary

* Updated lab installation

* Updated use of Lab installer

* updates

* Changed lab installation path

* Updated use of installer

* Works

* Added additional functions

* Updated some tests

* Updated go.sum

* Works

* Refactored assertions

* Added tests for testing.True

* Added tests for testing.None

* Added tests for testing.Lte

* Added tests for testing.Lt

* Added generic consturctor

* Added tests for testing.Len

* Added tests for testing.Gte

* Added tests for testing.Gt

* Added tests for testing.False

* Added tests for testing.Empty

* Added tests for testing.Fail

* Added tests for testing.Equal

* Added tests for testing.Include

* Updated urls in static page tests

* Fixed namespace unit tests

* Fixed unit test for testing.Len

* Updated E2E scripts

* Updaes

* Updated Chrome in CI/CD

* Added e2e for example test click.fql

* Added suite cases for example scripts

* Updated examples

* Updated

* Added type assertions

* Updated Chrome opts and disabled headers and cookies related tests

* Fixed iframes example

* Increased timeouts in navigation examples

* Updated value example

* Updated comments

* Disabled cookies examples

* Fixed static url

* Disabled headers examples

* Disabled UA test

* Simplified wait logic

* Added base testing module

* Fixes after codereview

* Disabled failing tests
2020-06-17 17:37:01 -04:00

73 lines
1.1 KiB
Go

package core
import (
"context"
"math"
"math/rand"
"reflect"
)
func IsNil(input interface{}) bool {
val := reflect.ValueOf(input)
kind := val.Kind()
switch kind {
case reflect.Ptr,
reflect.Array,
reflect.Slice,
reflect.Map,
reflect.Func,
reflect.Interface,
reflect.Chan:
return val.IsNil()
case reflect.Struct,
reflect.UnsafePointer:
return false
case reflect.Invalid:
return true
default:
return false
}
}
func NumberBoundaries(input float64) (max float64, min float64) {
min = input / 2
max = input * 2
return
}
func NumberUpperBoundary(input float64) float64 {
return input * 2
}
func NumberLowerBoundary(input float64) float64 {
return input / 2
}
func Random(max float64, min float64) float64 {
r := rand.Float64()
i := r * (max - min + 1)
out := math.Floor(i) + min
return out
}
func ForEach(ctx context.Context, iter Iterator, predicate func(value Value, key Value) bool) error {
for {
value, key, err := iter.Next(ctx)
if err != nil {
if IsNoMoreData(err) {
return nil
}
return err
}
if !predicate(value, key) {
return nil
}
}
}