propane 3.4.2-java → 3.5.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. checksums.yaml +4 -4
  2. data/.mvn/wrapper/MavenWrapperDownloader.java +1 -1
  3. data/.travis.yml +1 -1
  4. data/CHANGELOG.md +5 -1
  5. data/Gemfile +2 -0
  6. data/README.md +15 -3
  7. data/Rakefile +9 -10
  8. data/bin/propane +3 -1
  9. data/lib/propane.rb +2 -1
  10. data/lib/propane/app.rb +2 -1
  11. data/lib/propane/creators/sketch_class.rb +7 -1
  12. data/lib/propane/creators/sketch_factory.rb +4 -2
  13. data/lib/propane/creators/sketch_writer.rb +1 -0
  14. data/lib/propane/helper_methods.rb +22 -22
  15. data/lib/propane/helpers/numeric.rb +2 -0
  16. data/lib/propane/helpers/version_error.rb +1 -0
  17. data/lib/propane/library.rb +5 -1
  18. data/lib/propane/library_loader.rb +2 -0
  19. data/lib/propane/native_folder.rb +10 -9
  20. data/lib/propane/native_loader.rb +3 -0
  21. data/lib/propane/runner.rb +11 -5
  22. data/lib/propane/version.rb +2 -1
  23. data/library/boids/boids.rb +21 -11
  24. data/library/color_group/color_group.rb +2 -0
  25. data/library/control_panel/control_panel.rb +8 -5
  26. data/library/dxf/dxf.rb +2 -0
  27. data/library/file_chooser/chooser.rb +10 -9
  28. data/library/file_chooser/file_chooser.rb +10 -9
  29. data/library/library_proxy/library_proxy.rb +2 -0
  30. data/library/net/net.rb +2 -0
  31. data/library/simplex_noise/simplex_noise.rb +2 -0
  32. data/library/slider/slider.rb +23 -22
  33. data/library/vector_utils/vector_utils.rb +4 -0
  34. data/library/video_event/video_event.rb +2 -0
  35. data/pom.rb +46 -45
  36. data/pom.xml +4 -4
  37. data/propane.gemspec +8 -7
  38. data/src/main/java/monkstone/ColorUtil.java +1 -3
  39. data/src/main/java/monkstone/MathToolModule.java +1 -1
  40. data/src/main/java/monkstone/PropaneLibrary.java +2 -2
  41. data/src/main/java/monkstone/fastmath/Deglut.java +1 -1
  42. data/src/main/java/monkstone/filechooser/Chooser.java +1 -1
  43. data/src/main/java/monkstone/noise/SimplexNoise.java +2 -2
  44. data/src/main/java/monkstone/slider/CustomHorizontalSlider.java +1 -1
  45. data/src/main/java/monkstone/slider/CustomVerticalSlider.java +1 -1
  46. data/src/main/java/monkstone/slider/SimpleHorizontalSlider.java +1 -1
  47. data/src/main/java/monkstone/slider/SimpleVerticalSlider.java +1 -1
  48. data/src/main/java/monkstone/slider/SliderBar.java +1 -1
  49. data/src/main/java/monkstone/slider/SliderGroup.java +1 -1
  50. data/src/main/java/monkstone/slider/WheelHandler.java +1 -1
  51. data/src/main/java/monkstone/vecmath/package-info.java +1 -1
  52. data/src/main/java/monkstone/vecmath/vec2/Vec2.java +1 -1
  53. data/src/main/java/monkstone/vecmath/vec3/Vec3.java +1 -2
  54. data/src/main/java/monkstone/videoevent/CaptureEvent.java +1 -1
  55. data/src/main/java/monkstone/videoevent/MovieEvent.java +1 -1
  56. data/src/main/java/monkstone/videoevent/package-info.java +1 -1
  57. data/src/main/java/processing/awt/PGraphicsJava2D.java +788 -283
  58. data/src/main/java/processing/awt/PImageAWT.java +260 -0
  59. data/src/main/java/processing/awt/PShapeJava2D.java +56 -53
  60. data/src/main/java/processing/awt/PSurfaceAWT.java +309 -211
  61. data/src/main/java/processing/awt/ShimAWT.java +580 -0
  62. data/src/main/java/processing/core/PApplet.java +2877 -2098
  63. data/src/main/java/processing/core/PConstants.java +477 -447
  64. data/src/main/java/processing/core/PFont.java +930 -884
  65. data/src/main/java/processing/core/PGraphics.java +337 -309
  66. data/src/main/java/processing/core/PImage.java +1689 -1689
  67. data/src/main/java/processing/core/PMatrix.java +172 -159
  68. data/src/main/java/processing/core/PMatrix2D.java +456 -410
  69. data/src/main/java/processing/core/PMatrix3D.java +755 -735
  70. data/src/main/java/processing/core/PShape.java +2910 -2656
  71. data/src/main/java/processing/core/PShapeOBJ.java +97 -94
  72. data/src/main/java/processing/core/PShapeSVG.java +1656 -1462
  73. data/src/main/java/processing/core/PStyle.java +40 -37
  74. data/src/main/java/processing/core/PSurface.java +134 -97
  75. data/src/main/java/processing/core/PSurfaceNone.java +292 -218
  76. data/src/main/java/processing/core/PVector.java +991 -966
  77. data/src/main/java/processing/core/ThinkDifferent.java +12 -8
  78. data/src/main/java/processing/data/DoubleDict.java +756 -710
  79. data/src/main/java/processing/data/DoubleList.java +749 -696
  80. data/src/main/java/processing/data/FloatDict.java +748 -702
  81. data/src/main/java/processing/data/FloatList.java +751 -697
  82. data/src/main/java/processing/data/IntDict.java +720 -673
  83. data/src/main/java/processing/data/IntList.java +699 -633
  84. data/src/main/java/processing/data/JSONArray.java +931 -873
  85. data/src/main/java/processing/data/JSONObject.java +1262 -1165
  86. data/src/main/java/processing/data/JSONTokener.java +351 -341
  87. data/src/main/java/processing/data/LongDict.java +710 -663
  88. data/src/main/java/processing/data/LongList.java +701 -635
  89. data/src/main/java/processing/data/Sort.java +37 -41
  90. data/src/main/java/processing/data/StringDict.java +525 -486
  91. data/src/main/java/processing/data/StringList.java +626 -580
  92. data/src/main/java/processing/data/Table.java +3693 -3513
  93. data/src/main/java/processing/data/TableRow.java +182 -183
  94. data/src/main/java/processing/data/XML.java +954 -880
  95. data/src/main/java/processing/event/Event.java +87 -67
  96. data/src/main/java/processing/event/KeyEvent.java +48 -41
  97. data/src/main/java/processing/event/MouseEvent.java +87 -113
  98. data/src/main/java/processing/event/TouchEvent.java +10 -6
  99. data/src/main/java/processing/javafx/PSurfaceFX.java +26 -0
  100. data/src/main/java/processing/net/Client.java +20 -20
  101. data/src/main/java/processing/net/Server.java +9 -9
  102. data/src/main/java/processing/opengl/FontTexture.java +286 -266
  103. data/src/main/java/processing/opengl/FrameBuffer.java +390 -376
  104. data/src/main/java/processing/opengl/LinePath.java +130 -91
  105. data/src/main/java/processing/opengl/LineStroker.java +593 -582
  106. data/src/main/java/processing/opengl/PGL.java +645 -579
  107. data/src/main/java/processing/opengl/PGraphics2D.java +408 -315
  108. data/src/main/java/processing/opengl/PGraphics3D.java +107 -72
  109. data/src/main/java/processing/opengl/PGraphicsOpenGL.java +12287 -12030
  110. data/src/main/java/processing/opengl/PJOGL.java +1743 -1672
  111. data/src/main/java/processing/opengl/PShader.java +345 -416
  112. data/src/main/java/processing/opengl/PShapeOpenGL.java +4601 -4543
  113. data/src/main/java/processing/opengl/PSurfaceJOGL.java +1113 -1029
  114. data/src/main/java/processing/opengl/Texture.java +1489 -1401
  115. data/src/main/java/processing/opengl/VertexBuffer.java +57 -55
  116. data/test/create_test.rb +21 -20
  117. data/test/deglut_spec_test.rb +4 -2
  118. data/test/helper_methods_test.rb +49 -20
  119. data/test/math_tool_test.rb +39 -32
  120. data/test/native_folder.rb +47 -0
  121. data/test/respond_to_test.rb +3 -2
  122. data/test/sketches/key_event.rb +2 -2
  123. data/test/sketches/library/my_library/my_library.rb +3 -0
  124. data/test/test_helper.rb +2 -0
  125. data/test/vecmath_spec_test.rb +35 -22
  126. data/vendors/Rakefile +28 -22
  127. metadata +13 -13
  128. data/src/main/java/processing/opengl/shaders/LightVert-brcm.glsl +0 -154
  129. data/src/main/java/processing/opengl/shaders/LightVert-vc4.glsl +0 -154
  130. data/src/main/java/processing/opengl/shaders/TexLightVert-brcm.glsl +0 -160
  131. data/src/main/java/processing/opengl/shaders/TexLightVert-vc4.glsl +0 -160
@@ -1,3 +1,5 @@
1
+ /* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
+
1
3
  /*
2
4
  Part of the Processing project - http://processing.org
3
5
 
@@ -18,69 +20,69 @@
18
20
  Public License along with this library; if not, write to the
19
21
  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
20
22
  Boston, MA 02111-1307 USA
21
- */
23
+ */
24
+
22
25
  package processing.opengl;
23
26
 
24
27
  import processing.opengl.PGraphicsOpenGL.GLResourceVertexBuffer;
25
28
 
26
29
  // TODO: need to combine with PGraphicsOpenGL.VertexAttribute
27
30
  public class VertexBuffer {
28
-
29
- static protected final int INIT_VERTEX_BUFFER_SIZE = 256;
30
- static protected final int INIT_INDEX_BUFFER_SIZE = 512;
31
-
32
- public int glId;
33
- int target;
34
- int elementSize;
35
- int ncoords;
36
- boolean index;
37
-
38
- protected PGL pgl; // The interface between Processing and OpenGL.
39
- protected int context; // The context that created this texture.
40
- private GLResourceVertexBuffer glres;
41
-
42
- VertexBuffer(PGraphicsOpenGL pg, int target, int ncoords, int esize) {
43
- this(pg, target, ncoords, esize, false);
44
- }
45
-
46
- VertexBuffer(PGraphicsOpenGL pg, int target, int ncoords, int esize, boolean index) {
47
- pgl = pg.pgl;
48
- context = pgl.createEmptyContext();
49
-
50
- this.target = target;
51
- this.ncoords = ncoords;
52
- this.elementSize = esize;
53
- this.index = index;
54
- create();
55
- init();
56
- }
57
-
58
- protected void create() {
59
- context = pgl.getCurrentContext();
60
- glres = new GLResourceVertexBuffer(this);
61
- }
62
-
63
- protected void init() {
64
- int size = index ? ncoords * INIT_INDEX_BUFFER_SIZE * elementSize
65
- : ncoords * INIT_VERTEX_BUFFER_SIZE * elementSize;
66
- pgl.bindBuffer(target, glId);
67
- pgl.bufferData(target, size, null, PGL.STATIC_DRAW);
68
- }
69
-
70
- protected void dispose() {
71
- if (glres != null) {
72
- glres.dispose();
73
- glId = 0;
74
- glres = null;
75
- }
31
+ static protected final int INIT_VERTEX_BUFFER_SIZE = 256;
32
+ static protected final int INIT_INDEX_BUFFER_SIZE = 512;
33
+
34
+ public int glId;
35
+ int target;
36
+ int elementSize;
37
+ int ncoords;
38
+ boolean index;
39
+
40
+ protected PGL pgl; // The interface between Processing and OpenGL.
41
+ protected int context; // The context that created this texture.
42
+ private GLResourceVertexBuffer glres;
43
+
44
+ VertexBuffer(PGraphicsOpenGL pg, int target, int ncoords, int esize) {
45
+ this(pg, target, ncoords, esize, false);
46
+ }
47
+
48
+ VertexBuffer(PGraphicsOpenGL pg, int target, int ncoords, int esize, boolean index) {
49
+ pgl = pg.pgl;
50
+ context = pgl.createEmptyContext();
51
+
52
+ this.target = target;
53
+ this.ncoords = ncoords;
54
+ this.elementSize = esize;
55
+ this.index = index;
56
+ create();
57
+ init();
58
+ }
59
+
60
+ protected void create() {
61
+ context = pgl.getCurrentContext();
62
+ glres = new GLResourceVertexBuffer(this);
63
+ }
64
+
65
+ protected void init() {
66
+ int size = index ? ncoords * INIT_INDEX_BUFFER_SIZE * elementSize :
67
+ ncoords * INIT_VERTEX_BUFFER_SIZE * elementSize;
68
+ pgl.bindBuffer(target, glId);
69
+ pgl.bufferData(target, size, null, PGL.STATIC_DRAW);
70
+ }
71
+
72
+ protected void dispose() {
73
+ if (glres != null) {
74
+ glres.dispose();
75
+ glId = 0;
76
+ glres = null;
76
77
  }
78
+ }
77
79
 
78
- protected boolean contextIsOutdated() {
79
- boolean outdated = !pgl.contextIsCurrent(context);
80
- if (outdated) {
81
- dispose();
82
- }
83
- return outdated;
80
+ protected boolean contextIsOutdated() {
81
+ boolean outdated = !pgl.contextIsCurrent(context);
82
+ if (outdated) {
83
+ dispose();
84
84
  }
85
+ return outdated;
86
+ }
85
87
 
86
88
  }
@@ -1,33 +1,34 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'test_helper'
2
4
  require_relative '../lib/propane/creators/sketch_class'
3
5
  require_relative '../lib/propane/creators/sketch_writer'
4
6
 
5
7
  CLASS_SKETCH = <<~CODE
8
+ #!/usr/bin/env jruby
9
+ # frozen_string_literal: false
6
10
 
7
- #!/usr/bin/env jruby
8
- # frozen_string_literal: false
9
- require 'propane'
11
+ require 'propane'
10
12
 
11
- class FredSketch < Propane::App
12
- def settings
13
- size 200, 200
14
- end
13
+ class FredSketch < Propane::App
14
+ def settings
15
+ size 200, 200
16
+ end
15
17
 
16
- def setup
17
- sketch_title 'Fred Sketch'
18
- end
18
+ def setup
19
+ sketch_title 'Fred Sketch'
20
+ end
19
21
 
20
- def draw
22
+ def draw
21
23
 
24
+ end
22
25
  end
23
- end
24
26
 
25
- FredSketch.new
27
+ FredSketch.new
26
28
 
27
29
  CODE
28
-
30
+ # Create sketch test
29
31
  class SketchClassTest < Minitest::Test
30
-
31
32
  def setup
32
33
  @basic = SketchClass.new(name: 'fred_sketch', width: 200, height: 200)
33
34
  @sketch = SketchClass.new(name: 'fred_sketch', width: 200, height: 200, mode: 'p2d')
@@ -35,7 +36,7 @@ class SketchClassTest < Minitest::Test
35
36
 
36
37
  def test_class
37
38
  result = CLASS_SKETCH.split(/\n/, -1)
38
- class_lines = @sketch.lines
39
+ class_lines = @basic.lines
39
40
  class_lines.each_with_index do |line, i|
40
41
  assert_equal result[i], line
41
42
  end
@@ -54,15 +55,15 @@ class SketchClassTest < Minitest::Test
54
55
  assert_equal " sketch_title 'Fred Sketch'", @sketch.sketch_title
55
56
  end
56
57
 
57
- def test_class
58
- assert_equal "FredSketch", @sketch.sketch_class
58
+ def test_class_class
59
+ assert_equal 'FredSketch', @sketch.sketch_class
59
60
  end
60
61
 
61
62
  def test_class_new
62
- assert_equal "FredSketch.new", @sketch.sketch_new
63
+ assert_equal 'FredSketch.new', @sketch.sketch_new
63
64
  end
64
65
 
65
66
  def test_sketch_class
66
- assert_equal "class FredSketch < Propane::App", @basic.class_sketch
67
+ assert_equal 'class FredSketch < Propane::App', @basic.class_sketch
67
68
  end
68
69
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'test_helper'
2
4
  require 'java'
3
5
  require_relative '../lib/propane'
@@ -15,10 +17,10 @@ class DeglutTest < Minitest::Test
15
17
  (-720..720).step(1) do |deg|
16
18
  sine = DegLut.sin(deg)
17
19
  deg_sin = Math.sin(deg * to_radian)
18
- assert_in_delta(sine, deg_sin, delta = 0.000001)
20
+ assert_in_delta(sine, deg_sin, 0.000001)
19
21
  cosine = DegLut.cos(deg)
20
22
  deg_cos = Math.cos(deg * to_radian)
21
- assert_in_delta(cosine, deg_cos, delta = 0.000001)
23
+ assert_in_delta(cosine, deg_cos, 0.000001)
22
24
  end
23
25
  end
24
26
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require_relative 'test_helper'
3
4
  require 'java'
4
5
  require_relative '../lib/propane'
@@ -11,41 +12,69 @@ include MathTool
11
12
  Dir.chdir(File.dirname(__FILE__))
12
13
 
13
14
  class HelperMethodsTest < Minitest::Test
14
-
15
- ARRAY = %w(albatross dog horse)
16
- def test_hex_color
15
+ ARRAY = %w[albatross dog horse].freeze
16
+ def test_hex_color
17
17
  col_double = 0.5
18
18
  hexcolor = 0xFFCC6600
19
19
  dodgy_hexstring = '*56666'
20
20
  hexstring = '#CC6600'
21
21
  assert hex_color(col_double) == 0.5, 'double as a color'
22
- assert hex_color(hexcolor) == -3381760, 'hexadecimal fixnum color'
23
- assert hex_color(hexstring) == -3381760, 'hexadecimal string color'
22
+ assert hex_color(hexcolor) == -3_381_760, 'hexadecimal fixnum color'
23
+ assert hex_color(hexstring) == -3_381_760, 'hexadecimal string color'
24
24
  assert_raises(StandardError, 'Dodgy Hexstring') do
25
25
  hex_color(dodgy_hexstring)
26
26
  end
27
27
  assert_raises(StandardError, 'Dodgy Color Conversion') do
28
28
  hex_color([])
29
29
  end
30
- end
30
+ end
31
31
 
32
32
  def test_dist
33
- ax, ay, bx, by = 0, 0, 1.0, 1.0
34
- assert_in_epsilon(dist(ax, ay, bx, by), Math.sqrt(2), epsilon = 0.0001, msg = '2D distance')
33
+ ax = 0
34
+ ay = 0
35
+ bx = 1.0
36
+ by = 1.0
37
+ assert_in_epsilon(dist(ax, ay, bx, by), Math.sqrt(2), 0.0001, '2D distance')
35
38
  by = 0.0
36
- assert_in_epsilon(dist(ax, ay, bx, by), 1.0, epsilon = 0.0001, msg = 'when y dimension is zero')
37
- ax, ay, bx, by = 0, 0, 0.0, 0.0
38
- assert_in_epsilon(dist(ax, ay, bx, by), 0.0, epsilon = 0.0001, msg = 'when x and y dimension are zero')
39
- ax, ay, bx, by = 1, 1, -2.0, -3.0
40
- assert_in_epsilon(dist(ax, ay, bx, by), 5.0, epsilon = 0.0001, msg = 'classic triangle dimensions')
41
- ax, ay, bx, by, cx, cy = -1, -1, 100, 2.0, 3.0, 100
42
- assert_in_epsilon(dist(ax, ay, bx, by, cx, cy), 5.0, epsilon = 0.0001, msg = 'classic triangle dimensions')
43
- ax, ay, bx, by, cx, cy = 0, 0, -1.0, -1.0, 0, 0
44
- assert_in_epsilon(dist(ax, ay, bx, by, cx, cy), Math.sqrt(2), epsilon = 0.0001, msg = '2D distance')
45
- ax, ay, bx, by, cx, cy = 0, 0, 0.0, 0.0, 0, 0
39
+ assert_in_epsilon(dist(ax, ay, bx, by), 1.0, 0.0001, 'when y dimension is zero')
40
+ ax = 0
41
+ ay = 0
42
+ bx = 0.0
43
+ by = 0.0
44
+ assert_in_epsilon(dist(ax, ay, bx, by), 0.0, 0.0001, 'when x and y dimension are zero')
45
+ ax = 1
46
+ ay = 1
47
+ bx = -2.0
48
+ by = -3.0
49
+ assert_in_epsilon(dist(ax, ay, bx, by), 5.0, 0.0001, 'classic triangle dimensions')
50
+ ax = -1
51
+ ay = -1
52
+ bx = 100
53
+ by = 2.0
54
+ cx = 3.0
55
+ cy = 100
56
+ assert_in_epsilon(dist(ax, ay, bx, by, cx, cy), 5.0, 0.0001, 'classic triangle dimensions')
57
+ ax = 0
58
+ ay = 0
59
+ bx = -1.0
60
+ by = -1.0
61
+ cx = 0
62
+ cy = 0
63
+ assert_in_epsilon(dist(ax, ay, bx, by, cx, cy), Math.sqrt(2), 0.0001, '2D distance')
64
+ ax = 0
65
+ ay = 0
66
+ bx = 0.0
67
+ by = 0.0
68
+ cx = 0
69
+ cy = 0
46
70
  assert_in_epsilon(dist(ax, ay, bx, by, cx, cy), 0.0)
47
- ax, ay, bx, by, cx, cy = 0, 0, 1.0, 0.0, 0, 0
48
- assert_in_epsilon(dist(ax, ay, bx, by, cx, cy), 1.0, epsilon = 0.0001, msg = 'when x and z dimension are zero')
71
+ ax = 0
72
+ ay = 0
73
+ bx = 1.0
74
+ by = 0.0
75
+ cx = 0
76
+ cy = 0
77
+ assert_in_epsilon(dist(ax, ay, bx, by, cx, cy), 1.0, 0.0001, 'when x and z dimension are zero')
49
78
  end
50
79
 
51
80
  def test_min
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'test_helper'
2
4
  require 'java'
3
5
  require_relative '../lib/propane'
@@ -6,21 +8,20 @@ Java::Monkstone::PropaneLibrary.new.load(JRuby.runtime, false)
6
8
 
7
9
  # include Processing::HelperMethods
8
10
 
9
-
10
11
  Dir.chdir(File.dirname(__FILE__))
11
12
 
12
13
  class MathToolTest < Minitest::Test
13
- include MathTool
14
- def test_map1d
14
+ include MathTool
15
+ def test_map1d
15
16
  x = [0, 5, 7.5, 10]
16
17
  range1 = (0..10)
17
18
  range2 = (100..1)
18
19
  range3 = (0..10)
19
20
  range4 = (5..105)
20
- assert_in_delta(map1d(x[0], range1, range2), 100, delta = 0.00001, msg = 'map to first')
21
- assert_in_delta(map1d(x[1], range1, range2), 50.5, delta = 0.00001, msg = 'map to reversed intermediate')
22
- assert_in_delta(map1d(x[2], range3, range4), 80.0, delta = 0.00001, msg = 'map to intermediate')
23
- assert_in_delta(map1d(x[3], range1, range2), 1, delta = 0.00001, msg = 'map to last')
21
+ assert_in_delta(map1d(x[0], range1, range2), 100, 0.00001, 'map to first')
22
+ assert_in_delta(map1d(x[1], range1, range2), 50.5, 0.00001, 'map to reversed intermediate')
23
+ assert_in_delta(map1d(x[2], range3, range4), 80.0, 0.00001, 'map to intermediate')
24
+ assert_in_delta(map1d(x[3], range1, range2), 1, 0.00001, 'map to last')
24
25
  end
25
26
 
26
27
  def test_p5map # as map1d except not using range input
@@ -29,47 +30,53 @@ class MathToolTest < Minitest::Test
29
30
  range2 = (100..1)
30
31
  range3 = (0..10)
31
32
  range4 = (5..105)
32
- assert_in_delta(p5map(x[0], range1.first, range1.last, range2.first, range2.last), 100, delta = 0.00001)
33
- assert_in_delta(p5map(x[1], range1.first, range1.last, range2.first, range2.last), 50.5, delta = 0.00001)
34
- assert_in_delta(p5map(x[2], range3.first, range3.last, range4.first, range4.last), 80.0, delta = 0.00001)
35
- assert_in_delta(p5map(x[3], range1.first, range1.last, range2.first, range2.last), 1, delta = 0.00001)
33
+ assert_in_delta(p5map(x[0], range1.first, range1.last, range2.first, range2.last), 100, 0.00001)
34
+ assert_in_delta(p5map(x[1], range1.first, range1.last, range2.first, range2.last), 50.5, 0.00001)
35
+ assert_in_delta(p5map(x[2], range3.first, range3.last, range4.first, range4.last), 80.0, 0.00001)
36
+ assert_in_delta(p5map(x[3], range1.first, range1.last, range2.first, range2.last), 1, 0.00001)
36
37
  end
37
38
 
38
39
  def test_norm
39
40
  x = [10, 140, 210]
40
- start0, last0 = 30, 200
41
- start_int, last_int = 0, 200
42
- assert_in_delta(norm(x[0], start0, last0), -0.11764705882352941, delta = 0.00001, msg = 'unclamped map')
43
- assert_in_delta(norm(x[1], start_int, last_int), 0.7, delta = 0.00001, msg = 'map to intermediate')
44
- assert_in_delta(norm(x[2], start_int, last_int), 1.05, delta = 0.00001, msg = 'unclamped map')
41
+ start0 = 30
42
+ last0 = 200
43
+ start_int = 0
44
+ last_int = 200
45
+ assert_in_delta(norm(x[0], start0, last0), -0.11764705882352941, 0.00001, 'unclamped map')
46
+ assert_in_delta(norm(x[1], start_int, last_int), 0.7, 0.00001, 'map to intermediate')
47
+ assert_in_delta(norm(x[2], start_int, last_int), 1.05, 0.00001, 'unclamped map')
45
48
  end
46
49
 
47
50
  def test_norm_strict
48
51
  x = [10, 140, 210]
49
- assert_in_delta(norm_strict(x[2], x[0], x[1]), 1.0, delta = 0.00001, msg = 'clamped map to 0..1.0')
50
- assert_in_delta(norm_strict(x[2], x[1], x[0]), 0.0, delta = 0.00001, msg = 'clamped map to 0..1.0')
51
- assert_in_delta(norm_strict(x[1], x[0], x[2]), 0.65, delta = 0.00001, msg = 'clamped map to 0..1.0')
52
+ assert_in_delta(norm_strict(x[2], x[0], x[1]), 1.0, 0.00001, 'clamped map to 0..1.0')
53
+ assert_in_delta(norm_strict(x[2], x[1], x[0]), 0.0, 0.00001, 'clamped map to 0..1.0')
54
+ assert_in_delta(norm_strict(x[1], x[0], x[2]), 0.65, 0.00001, 'clamped map to 0..1.0')
52
55
  end
53
56
 
54
57
  def test_lerp # behaviour is deliberately different to processing which is unclamped
55
58
  x = [0.5, 0.8, 2.0]
56
- start0, last0 = 300, 200
57
- start_int, last_int = 0, 200
58
- assert_in_delta(lerp(start0, last0, x[0]), 250, delta = 0.00001, msg = 'produces a intermediate value of a reversed range')
59
- assert_in_delta(lerp(start_int, last_int, x[1]), 160, delta = 0.00001, msg = 'lerps to an intermediate value')
60
- assert_in_delta(lerp(start_int, last_int, x[2]), 200, delta = 0.00001, msg = 'lerps to the last value of a range')
59
+ start0 = 300
60
+ last0 = 200
61
+ start_int = 0
62
+ last_int = 200
63
+ assert_in_delta(lerp(start0, last0, x[0]), 250, 0.00001, 'produces a intermediate value of a reversed range')
64
+ assert_in_delta(lerp(start_int, last_int, x[1]), 160, 0.00001, 'lerps to an intermediate value')
65
+ assert_in_delta(lerp(start_int, last_int, x[2]), 200, 0.00001, 'lerps to the last value of a range')
61
66
  end
62
67
 
63
68
  def test_constrain
64
69
  x_int = [15, 2_500, -2_500]
65
- start_int, last_int = 0, 200
66
- assert_in_delta(constrain(x_int[0], start_int, last_int), 15, delta = 0.00001)
67
- assert_in_delta(constrain(x_int[1], start_int, last_int), 200, delta = 0.00001)
68
- assert_in_delta(constrain(x_int[2], start_int, last_int), 0, delta = 0.00001)
70
+ start_int = 0
71
+ last_int = 200
72
+ assert_in_delta(constrain(x_int[0], start_int, last_int), 15, 0.00001)
73
+ assert_in_delta(constrain(x_int[1], start_int, last_int), 200, 0.00001)
74
+ assert_in_delta(constrain(x_int[2], start_int, last_int), 0, 0.00001)
69
75
  xf = [15.0, 2_500.0, -2_500.0]
70
- startf, lastf = 0, 200.0
71
- assert_in_delta(constrain(xf[0], startf, lastf), 15.0, delta = 0.00001, msg = 'constrain to 0..200')
72
- assert_in_delta(constrain(xf[1], startf, lastf), 200.0, delta = 0.00001, msg = 'constrain to 0..200')
73
- assert_in_delta(constrain(xf[2], startf, lastf), 0.0, delta = 0.00001, msg = 'constrain to 0..200')
76
+ startf = 0
77
+ lastf = 200.0
78
+ assert_in_delta(constrain(xf[0], startf, lastf), 15.0, 0.00001, 'constrain to 0..200')
79
+ assert_in_delta(constrain(xf[1], startf, lastf), 200.0, 0.00001, 'constrain to 0..200')
80
+ assert_in_delta(constrain(xf[2], startf, lastf), 0.0, 0.00001, 'constrain to 0..200')
74
81
  end
75
82
  end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'test_helper'
4
+ require 'java'
5
+ require_relative '../lib/propane'
6
+ # Mock class
7
+ class WindowsNativeFolder < NativeFolder
8
+ def initialize
9
+ @os = 'mswin'
10
+ @bit = 64
11
+ end
12
+ end
13
+
14
+ class MacNativeFolder < NativeFolder
15
+ def initialize
16
+ @os = 'mac'
17
+ @bit = 64
18
+ end
19
+ end
20
+
21
+ # Test class
22
+ class NativeFolderTest < Minitest::Test
23
+ def test_windows_native_folder
24
+ obj = WindowsNativeFolder.new
25
+ assert_kind_of NativeFolder, obj, 'Constructor Failed'
26
+ assert(/windows/.match?(obj.name))
27
+ assert(/\*.dll/.match?(obj.extension))
28
+ end
29
+
30
+ class NativeFolderTest < Minitest::Test
31
+ def test_windows_native_folder
32
+ obj = MacNativeFolder.new
33
+ assert_kind_of NativeFolder, obj, 'Constructor Failed'
34
+ assert(/macos/.match?(obj.name))
35
+ assert(/\*.dylib/.match?(obj.extension))
36
+ end
37
+ end
38
+
39
+ if /linux/.match?(RbConfig::CONFIG['host_os'].downcase)
40
+ def test_native_folder
41
+ obj = NativeFolder.new
42
+ assert_instance_of NativeFolder, obj, 'Constructor Failed'
43
+ assert(/linux/.match?(obj.name))
44
+ assert(/\*.so/.match?(obj.extension))
45
+ end
46
+ end
47
+ end