propane 3.4.0-java → 3.7.0.pre-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 (155) hide show
  1. checksums.yaml +4 -4
  2. data/.mvn/extensions.xml +1 -2
  3. data/.mvn/wrapper/MavenWrapperDownloader.java +2 -2
  4. data/.mvn/wrapper/maven-wrapper.properties +2 -2
  5. data/.travis.yml +2 -2
  6. data/CHANGELOG.md +12 -0
  7. data/Gemfile +2 -0
  8. data/README.md +17 -8
  9. data/Rakefile +10 -11
  10. data/bin/propane +3 -1
  11. data/lib/propane.rb +6 -4
  12. data/lib/propane/app.rb +20 -10
  13. data/lib/propane/creators/sketch_class.rb +7 -1
  14. data/lib/propane/creators/sketch_factory.rb +4 -2
  15. data/lib/propane/creators/sketch_writer.rb +1 -0
  16. data/lib/propane/helper_methods.rb +23 -24
  17. data/lib/propane/helpers/numeric.rb +2 -0
  18. data/lib/propane/helpers/version_error.rb +1 -0
  19. data/lib/propane/library.rb +5 -1
  20. data/lib/propane/library_loader.rb +2 -0
  21. data/lib/propane/native_folder.rb +10 -9
  22. data/lib/propane/native_loader.rb +3 -0
  23. data/lib/propane/runner.rb +14 -6
  24. data/lib/propane/version.rb +2 -1
  25. data/library/boids/boids.rb +21 -11
  26. data/library/color_group/color_group.rb +28 -0
  27. data/library/control_panel/control_panel.rb +8 -5
  28. data/library/dxf/dxf.rb +6 -0
  29. data/library/file_chooser/chooser.rb +10 -9
  30. data/library/file_chooser/file_chooser.rb +10 -9
  31. data/library/library_proxy/library_proxy.rb +2 -0
  32. data/library/net/net.rb +7 -0
  33. data/library/simplex_noise/simplex_noise.rb +2 -0
  34. data/library/slider/slider.rb +23 -22
  35. data/library/vector_utils/vector_utils.rb +4 -0
  36. data/library/video_event/video_event.rb +4 -1
  37. data/pom.rb +37 -36
  38. data/pom.xml +7 -7
  39. data/propane.gemspec +16 -12
  40. data/src/main/java/monkstone/ColorUtil.java +13 -1
  41. data/src/main/java/monkstone/MathToolModule.java +253 -203
  42. data/src/main/java/monkstone/PropaneLibrary.java +2 -2
  43. data/src/main/java/monkstone/fastmath/Deglut.java +1 -1
  44. data/src/main/java/monkstone/filechooser/Chooser.java +2 -1
  45. data/src/main/java/monkstone/noise/SimplexNoise.java +2 -2
  46. data/src/main/java/monkstone/slider/CustomHorizontalSlider.java +1 -1
  47. data/src/main/java/monkstone/slider/CustomVerticalSlider.java +1 -1
  48. data/src/main/java/monkstone/slider/SimpleHorizontalSlider.java +1 -1
  49. data/src/main/java/monkstone/slider/SimpleVerticalSlider.java +1 -1
  50. data/src/main/java/monkstone/slider/SliderBar.java +1 -1
  51. data/src/main/java/monkstone/slider/SliderGroup.java +1 -1
  52. data/src/main/java/monkstone/slider/WheelHandler.java +7 -6
  53. data/src/main/java/monkstone/vecmath/package-info.java +1 -1
  54. data/src/main/java/monkstone/vecmath/vec2/Vec2.java +1 -1
  55. data/src/main/java/monkstone/vecmath/vec3/Vec3.java +3 -3
  56. data/src/main/java/monkstone/videoevent/CaptureEvent.java +27 -0
  57. data/src/main/java/monkstone/videoevent/{VideoInterface.java → MovieEvent.java} +11 -27
  58. data/src/main/java/monkstone/videoevent/package-info.java +1 -1
  59. data/src/main/java/processing/awt/PGraphicsJava2D.java +781 -285
  60. data/src/main/java/processing/awt/PImageAWT.java +377 -0
  61. data/src/main/java/processing/awt/PShapeJava2D.java +56 -52
  62. data/src/main/java/processing/awt/PSurfaceAWT.java +309 -209
  63. data/src/main/java/processing/awt/ShimAWT.java +581 -0
  64. data/src/main/java/processing/core/PApplet.java +4510 -4503
  65. data/src/main/java/processing/core/PConstants.java +477 -447
  66. data/src/main/java/processing/core/PFont.java +914 -880
  67. data/src/main/java/processing/core/PGraphics.java +193 -177
  68. data/src/main/java/processing/core/PImage.java +611 -309
  69. data/src/main/java/processing/core/PMatrix.java +172 -159
  70. data/src/main/java/processing/core/PMatrix2D.java +478 -415
  71. data/src/main/java/processing/core/PMatrix3D.java +762 -735
  72. data/src/main/java/processing/core/PShape.java +2888 -2652
  73. data/src/main/java/processing/core/PShapeOBJ.java +97 -92
  74. data/src/main/java/processing/core/PShapeSVG.java +1705 -1490
  75. data/src/main/java/processing/core/PStyle.java +40 -37
  76. data/src/main/java/processing/core/PSurface.java +139 -97
  77. data/src/main/java/processing/core/PSurfaceNone.java +296 -218
  78. data/src/main/java/processing/core/PVector.java +997 -965
  79. data/src/main/java/processing/core/ThinkDifferent.java +15 -13
  80. data/src/main/java/processing/data/DoubleDict.java +756 -710
  81. data/src/main/java/processing/data/DoubleList.java +749 -696
  82. data/src/main/java/processing/data/FloatDict.java +748 -702
  83. data/src/main/java/processing/data/FloatList.java +751 -697
  84. data/src/main/java/processing/data/IntDict.java +720 -673
  85. data/src/main/java/processing/data/IntList.java +699 -633
  86. data/src/main/java/processing/data/JSONArray.java +931 -873
  87. data/src/main/java/processing/data/JSONObject.java +1262 -1165
  88. data/src/main/java/processing/data/JSONTokener.java +351 -341
  89. data/src/main/java/processing/data/LongDict.java +710 -663
  90. data/src/main/java/processing/data/LongList.java +701 -635
  91. data/src/main/java/processing/data/Sort.java +37 -41
  92. data/src/main/java/processing/data/StringDict.java +525 -486
  93. data/src/main/java/processing/data/StringList.java +626 -580
  94. data/src/main/java/processing/data/Table.java +3690 -3510
  95. data/src/main/java/processing/data/TableRow.java +182 -183
  96. data/src/main/java/processing/data/XML.java +957 -883
  97. data/src/main/java/processing/dxf/RawDXF.java +404 -0
  98. data/src/main/java/processing/event/Event.java +87 -67
  99. data/src/main/java/processing/event/KeyEvent.java +48 -41
  100. data/src/main/java/processing/event/MouseEvent.java +88 -113
  101. data/src/main/java/processing/event/TouchEvent.java +10 -6
  102. data/src/main/java/processing/javafx/PGraphicsFX2D.java +20 -345
  103. data/src/main/java/processing/javafx/PSurfaceFX.java +149 -121
  104. data/src/main/java/processing/net/Client.java +744 -0
  105. data/src/main/java/processing/net/Server.java +388 -0
  106. data/src/main/java/processing/opengl/FontTexture.java +289 -270
  107. data/src/main/java/processing/opengl/FrameBuffer.java +386 -364
  108. data/src/main/java/processing/opengl/LinePath.java +547 -500
  109. data/src/main/java/processing/opengl/LineStroker.java +588 -581
  110. data/src/main/java/processing/opengl/PGL.java +3047 -2914
  111. data/src/main/java/processing/opengl/PGraphics2D.java +408 -315
  112. data/src/main/java/processing/opengl/PGraphics3D.java +107 -72
  113. data/src/main/java/processing/opengl/PGraphicsOpenGL.java +12378 -12075
  114. data/src/main/java/processing/opengl/PJOGL.java +1753 -1670
  115. data/src/main/java/processing/opengl/PShader.java +1266 -1257
  116. data/src/main/java/processing/opengl/PShapeOpenGL.java +4678 -4580
  117. data/src/main/java/processing/opengl/PSurfaceJOGL.java +1114 -1027
  118. data/src/main/java/processing/opengl/Texture.java +1492 -1401
  119. data/src/main/java/processing/opengl/VertexBuffer.java +57 -55
  120. data/test/create_test.rb +21 -20
  121. data/test/deglut_spec_test.rb +4 -2
  122. data/test/helper_methods_test.rb +49 -20
  123. data/test/math_tool_test.rb +39 -32
  124. data/test/native_folder.rb +47 -0
  125. data/test/respond_to_test.rb +3 -2
  126. data/test/sketches/key_event.rb +2 -2
  127. data/test/sketches/library/my_library/my_library.rb +3 -0
  128. data/test/test_helper.rb +2 -0
  129. data/test/vecmath_spec_test.rb +35 -22
  130. data/vendors/Rakefile +33 -62
  131. metadata +56 -48
  132. data/src/main/java/processing/core/util/image/ImageLoadFacade.java +0 -161
  133. data/src/main/java/processing/core/util/image/ImageSaveFacade.java +0 -169
  134. data/src/main/java/processing/core/util/image/constants/TifConstants.java +0 -45
  135. data/src/main/java/processing/core/util/image/load/AwtImageLoadStrategy.java +0 -80
  136. data/src/main/java/processing/core/util/image/load/Base64StringImageLoadStrategy.java +0 -73
  137. data/src/main/java/processing/core/util/image/load/FallbackImageLoadStrategy.java +0 -70
  138. data/src/main/java/processing/core/util/image/load/ImageIoImageLoadStrategy.java +0 -132
  139. data/src/main/java/processing/core/util/image/load/ImageLoadStrategy.java +0 -48
  140. data/src/main/java/processing/core/util/image/load/ImageLoadUtil.java +0 -45
  141. data/src/main/java/processing/core/util/image/load/TgaImageLoadStrategy.java +0 -255
  142. data/src/main/java/processing/core/util/image/load/TiffImageLoadStrategy.java +0 -98
  143. data/src/main/java/processing/core/util/image/save/ImageSaveStrategy.java +0 -49
  144. data/src/main/java/processing/core/util/image/save/ImageSaveUtil.java +0 -48
  145. data/src/main/java/processing/core/util/image/save/ImageWriterImageSaveStrategy.java +0 -179
  146. data/src/main/java/processing/core/util/image/save/SaveImageException.java +0 -41
  147. data/src/main/java/processing/core/util/image/save/TgaImageSaveStrategy.java +0 -198
  148. data/src/main/java/processing/core/util/image/save/TiffImageSaveStrategy.java +0 -91
  149. data/src/main/java/processing/core/util/image/save/TiffNakedFilenameImageSaveStrategy.java +0 -57
  150. data/src/main/java/processing/core/util/io/InputFactory.java +0 -285
  151. data/src/main/java/processing/core/util/io/PathUtil.java +0 -109
  152. data/src/main/java/processing/opengl/shaders/LightVert-brcm.glsl +0 -154
  153. data/src/main/java/processing/opengl/shaders/LightVert-vc4.glsl +0 -154
  154. data/src/main/java/processing/opengl/shaders/TexLightVert-brcm.glsl +0 -160
  155. 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 final void create() {
61
+ context = pgl.getCurrentContext();
62
+ glres = new GLResourceVertexBuffer(this);
63
+ }
64
+
65
+ protected final 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