Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
a2eeaf3
fromBytes function in ImageTools. current plan - deprecate loadFromFi…
ShaharMS May 24, 2025
1bda5ad
added js image loading technique,notice that they are spin-looping, s…
ShaharMS May 24, 2025
4739514
support for RAW and JPEG in load function, CI should fail
ShaharMS May 24, 2025
1cc1997
further integration of new from methods: fromURL and fromFile. need t…
ShaharMS May 24, 2025
911acbc
Js & format lib methods for exporting images to different formats (bm…
ShaharMS May 26, 2025
49c3cb2
Added `To`, `ToBytes` and their respective methods/property with inte…
ShaharMS May 27, 2025
b0188e8
FromFramework, copied framework IO to a seperate file
ShaharMS May 27, 2025
46fd612
To methods for frameworks, integration into ImageIO
ShaharMS May 27, 2025
e9e316f
Removed ImageTools.from/to references, as well as the functions.
ShaharMS May 27, 2025
ddf4736
Changelog and stuff
ShaharMS May 28, 2025
a9bfa1e
some little fixes here and there + renames
ShaharMS May 28, 2025
02b5bc9
Merge pull request #50 from ShaharMS/qol/better-image-loading
ShaharMS May 28, 2025
f967864
Starting the new generator
ShaharMS May 28, 2025
ee5ac92
First steps towards something simple
ShaharMS May 28, 2025
20fcf57
Detector now basically fully works, onto generation
ShaharMS May 29, 2025
141fd35
progress on generation
ShaharMS May 29, 2025
8984bef
Major progress on generator
ShaharMS May 29, 2025
a348462
generated test classes are pretty much done
ShaharMS May 29, 2025
f4a9e53
Holy moly lots of progress! well the generator + detector are pretty …
ShaharMS Jun 4, 2025
af4c312
There are still some problems with the generator, but i might leave i…
ShaharMS Jun 4, 2025
e19d173
A more intelligent generator, also a more comfortable gen + run metho…
ShaharMS Jun 5, 2025
60abe5b
formatting changes to output files + better generator
ShaharMS Jun 5, 2025
d18cfb0
Standardized the way function signatres are written (void never decla…
ShaharMS Jun 8, 2025
a608a43
Basically all unit tests generated, also improved generator + detecto…
ShaharMS Jun 8, 2025
a5359c8
Regenerate tests one more time to have a more cohesive structure. Tes…
ShaharMS Jun 9, 2025
61eba74
more unit tests, need to resolve stuff with byte array
ShaharMS Jun 11, 2025
f61fcbc
Partial tests for color, bytearray fixed
ShaharMS Jun 11, 2025
504bc5c
some more tests
ShaharMS Jun 11, 2025
8ff82f2
done with tests for Color, fix some tests as well
ShaharMS Jun 14, 2025
fb66ad8
More tests, need to fix the test resolve bar sometime in the future
ShaharMS Jun 15, 2025
3d660d9
Some tests for MathTools
ShaharMS Jun 15, 2025
b146b7f
More tests...
ShaharMS Jun 29, 2025
2ef9058
Some more tests
ShaharMS Nov 21, 2025
e48fad5
Fix core algorithms and math utilities
ShaharMS Jan 25, 2026
b0e3ccf
Revamp test tooling and generator
ShaharMS Jan 25, 2026
510a728
Regenerate utest test cases
ShaharMS Jan 25, 2026
d2683d8
Add test explorer results cache
ShaharMS Jan 25, 2026
483029e
Update CI tests and remove legacy suites
ShaharMS Jan 25, 2026
073ee12
make tests cross-platform
ShaharMS Jan 25, 2026
76558a6
Resolve tests on multiple targets, as well as run them. Split compile…
ShaharMS Jan 25, 2026
dc1b94d
Add local CI runner and align workflow
ShaharMS Jan 25, 2026
db5ec5c
More CICD things, ability to run ci locally. Fixes for cross platform…
ShaharMS Jan 25, 2026
3bfde97
More tests, new macro protection for targets vulnerable to excessive …
ShaharMS Jan 26, 2026
b4fb132
Implement bicubic interpolation :partying_face:
ShaharMS Jan 27, 2026
fcbf991
And a little more :D
ShaharMS Jan 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
179 changes: 146 additions & 33 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,61 +2,174 @@ name: CI
on: [push, pull_request]

jobs:
cross-platformness:
tests:
if: ${{ false }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
algo: ['convolve']
haxe-version: [4.2.5]
target: [cpp, cppia, js, cs, hl, interp, java, jvm, python, php, lua, neko]
haxe-version: [4.2.5, 4.3.7]
target: [interp, neko, hl, js, cpp, jvm, python, lua, php, cs, java, cppia]
include:
- target: interp
flag: --interp
output: ""
- target: neko
flag: --neko
output: bin/neko/tests.n
- target: hl
flag: --hl
output: bin/hl/tests.hl
- target: js
flag: --js
output: bin/js/tests.js
- target: cpp
flag: --cpp
output: bin/cpp
- target: jvm
flag: --jvm
output: bin/jvm/tests.jar
- target: python
flag: --python
output: bin/python/tests.py
- target: lua
flag: --lua
output: bin/lua/tests.lua
- target: php
flag: --php
output: bin/php
- target: cs
flag: --cs
output: bin/cs
- target: java
flag: --java
output: bin/java
- target: cppia
flag: --cppia
output: bin/cppia/tests.cppia
steps:
- uses: actions/checkout@v4
- name: Setup Haxe (${{ matrix.haxe-version }})
uses: krdlab/setup-haxe@v1
with:
haxe-version: ${{ matrix.haxe-version }}

- name: Set HAXEPATH
run: |
echo "HAXEPATH=$HAXE_STD_PATH/.." >> $GITHUB_ENV
- name: Install & Set-up Vision
run: |
haxelib dev vision $GITHUB_WORKSPACE
haxelib install format --quiet
haxelib install hxcpp --quiet
haxelib install hxjava --quiet
haxelib install hxcs --quiet
- name: ${{ matrix.algo }} (${{ matrix.target }})
- name: Setup Node (js only)
if: ${{ matrix.target == 'js' }}
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Setup Neko (neko only)
if: ${{ matrix.target == 'neko' }}
run: |
cd unit_tests/${{ matrix.algo }}
haxe ${{ matrix.target }}.hxml
algorithm:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
algo: ['general', 'laplacianEdgeDiffOperator', 'limitColorRanges', 'bilateralDenoise', 'whiteNoise', 'deepfry', 'vignette', 'simpleLine2DDetection', 'combine', 'perwittEdgeDiffOperator', 'cannyEdgeDetection', 'projectiveTransform', 'posterize', 'invert', 'saltAndPepperNoise', 'normalize', 'smooth', 'medianBlur', 'laplacianOfGaussianEdgeDetection', 'convolutionRidgeDetection', 'blackAndWhite', 'fisheyeDistortion', 'erode', 'nearestNeighborBlur', 'mustacheDistortion', 'gaussianBlur', 'pixelate', 'sepia', 'dilate', 'sharpen', 'grayscale', 'convolve', 'robertEdgeDiffOperator', 'replaceColorRanges', 'sobelEdgeDiffOperator', 'sobelEdgeDetection', 'pincushionDistortion', 'barrelDistortion', 'contrast', 'perwittEdgeDetection', 'dropOutNoise', 'affineTransform', 'tint', 'filterForColorChannel', 'kmeansPosterize', 'kmeansGroupImageColors', 'simpleImageSimilarity']
haxe-version: [4.2.5]
target: [interp]
steps:
- uses: actions/checkout@v1
- name: Setup Haxe (${{ matrix.haxe-version }})
uses: krdlab/setup-haxe@v1
NEKO_BIN="$HAXE_STD_PATH/../neko/bin"
if [ -x "$NEKO_BIN/neko" ]; then
echo "$NEKO_BIN" >> $GITHUB_PATH
echo "NEKO_HOME=$HAXE_STD_PATH/../neko" >> $GITHUB_ENV
"$NEKO_BIN/neko" -version
else
sudo apt-get update
sudo apt-get install -y neko
neko -version
fi

- name: Setup Java (java/jvm only)
if: ${{ matrix.target == 'java' || matrix.target == 'jvm' }}
uses: actions/setup-java@v4
with:
haxe-version: ${{ matrix.haxe-version }}
distribution: 'temurin'
java-version: '17'

- name: Setup Python (python only)
if: ${{ matrix.target == 'python' }}
uses: actions/setup-python@v5
with:
python-version: '3.x'

- name: Setup PHP (php only)
if: ${{ matrix.target == 'php' }}
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'

- name: Install runtime deps (lua/cs/hl)
if: ${{ matrix.target == 'lua' || matrix.target == 'cs' || matrix.target == 'hl' }}
run: |
sudo apt-get update
if [ "${{ matrix.target }}" = "lua" ]; then
sudo apt-get install -y lua5.3
fi
if [ "${{ matrix.target }}" = "cs" ]; then
sudo apt-get install -y mono-complete
fi
if [ "${{ matrix.target }}" = "hl" ]; then
sudo apt-get install -y hashlink
fi

- name: Set HAXEPATH
run: |
echo "HAXEPATH=$HAXE_STD_PATH/.." >> $GITHUB_ENV
- name: Install & Set-up Vision
run: |
haxelib dev vision $GITHUB_WORKSPACE
haxelib install utest --quiet
haxelib install format --quiet
haxelib install hxcpp --quiet
haxelib install hxjava --quiet
haxelib install hxcs --quiet
- name: ${{ matrix.algo }} (${{ matrix.target }})
- name: Compile (${{ matrix.target }})
run: |
mkdir -p bin
CMD="haxe --class-path tests/generated/src --main Main --library vision --library format --library utest -debug -D vision_skip_golden -D vision_skip_invalid_tests"
if [ "${{ matrix.target }}" = "java" ] || [ "${{ matrix.target }}" = "jvm" ]; then
CMD="$CMD --no-inline"
fi
if [ "${{ matrix.target }}" = "interp" ]; then
CMD="$CMD --no-output"
elif [ "${{ matrix.output }}" != "" ]; then
CMD="$CMD ${{ matrix.flag }} ${{ matrix.output }}"
else
CMD="$CMD ${{ matrix.flag }}"
fi
echo "$CMD"
$CMD

- name: Run (${{ matrix.target }})
run: |
cd unit_tests/${{ matrix.algo }}
haxe ${{ matrix.target }}.hxml
if [ "${{ matrix.target }}" = "js" ]; then
node bin/js/tests.js
fi
if [ "${{ matrix.target }}" = "neko" ]; then
neko bin/neko/tests.n
fi
if [ "${{ matrix.target }}" = "hl" ]; then
hl bin/hl/tests.hl
fi
if [ "${{ matrix.target }}" = "cpp" ]; then
./bin/cpp/Main
fi
if [ "${{ matrix.target }}" = "jvm" ]; then
java -jar bin/jvm/tests.jar
fi
if [ "${{ matrix.target }}" = "java" ]; then
java -cp bin/java/obj Main
fi
if [ "${{ matrix.target }}" = "python" ]; then
python bin/python/tests.py
fi
if [ "${{ matrix.target }}" = "lua" ]; then
lua bin/lua/tests.lua
fi
if [ "${{ matrix.target }}" = "php" ]; then
php bin/php/index.php
fi
if [ "${{ matrix.target }}" = "cs" ]; then
mono bin/cs/bin/Main.exe
fi
if [ "${{ matrix.target }}" = "cppia" ]; then
cppia bin/cppia/tests.cppia
fi
if [ "${{ matrix.target }}" = "interp" ]; then
haxe --class-path tests/generated/src --main Main --library vision --library format --library utest -debug --interp
fi
Loading