diff --git a/addons/tau-plot/tests/bar/log_scale/test_bar_logarithmic.gd b/addons/tau-plot/tests/bar/log_scale/test_bar_logarithmic.gd index 4242673..fefcc23 100644 --- a/addons/tau-plot/tests/bar/log_scale/test_bar_logarithmic.gd +++ b/addons/tau-plot/tests/bar/log_scale/test_bar_logarithmic.gd @@ -82,13 +82,13 @@ func _setup_test_1() -> void: x_axis.type = TauAxisConfig.Type.CONTINUOUS x_axis.scale = TauAxisConfig.Scale.LOGARITHMIC - var left_axis := TauAxisConfig.new() - left_axis.title = "Y (linear)" - left_axis.type = TauAxisConfig.Type.CONTINUOUS - left_axis.scale = TauAxisConfig.Scale.LINEAR - left_axis.range_override_enabled = true - left_axis.min_override = 0.01 - left_axis.max_override = 8.00 + var y_axis := TauAxisConfig.new() + y_axis.title = "Y (linear)" + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LINEAR + y_axis.range_override_enabled = true + y_axis.min_override = 0.01 + y_axis.max_override = 8.00 var bar_config := TauBarConfig.new() bar_config.mode = TauBarConfig.BarMode.GROUPED @@ -96,7 +96,7 @@ func _setup_test_1() -> void: bar_config.bar_gap_x_units = 1.01 var pane := TauPaneConfig.new() - pane.y_left_axis = left_axis + pane.y_left_axis = y_axis pane.overlays = [bar_config] var config := TauXYConfig.new() @@ -169,17 +169,17 @@ func _setup_test_2() -> void: x_axis.type = TauAxisConfig.Type.CONTINUOUS x_axis.scale = TauAxisConfig.Scale.LINEAR - var left_axis := TauAxisConfig.new() - left_axis.title = "Y (log scale)" - left_axis.type = TauAxisConfig.Type.CONTINUOUS - left_axis.scale = TauAxisConfig.Scale.LOGARITHMIC - left_axis.include_zero_in_domain = false + var y_axis := TauAxisConfig.new() + y_axis.title = "Y (log scale)" + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LOGARITHMIC + y_axis.include_zero_in_domain = false var bar_config := TauBarConfig.new() bar_config.mode = TauBarConfig.BarMode.GROUPED var pane := TauPaneConfig.new() - pane.y_left_axis = left_axis + pane.y_left_axis = y_axis pane.overlays = [bar_config] var config := TauXYConfig.new() @@ -251,17 +251,17 @@ func _setup_test_3() -> void: x_axis.type = TauAxisConfig.Type.CONTINUOUS x_axis.scale = TauAxisConfig.Scale.LOGARITHMIC - var left_axis := TauAxisConfig.new() - left_axis.title = "Y (log scale)" - left_axis.type = TauAxisConfig.Type.CONTINUOUS - left_axis.scale = TauAxisConfig.Scale.LOGARITHMIC - left_axis.include_zero_in_domain = false + var y_axis := TauAxisConfig.new() + y_axis.title = "Y (log scale)" + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LOGARITHMIC + y_axis.include_zero_in_domain = false var bar_config := TauBarConfig.new() bar_config.mode = TauBarConfig.BarMode.GROUPED var pane := TauPaneConfig.new() - pane.y_left_axis = left_axis + pane.y_left_axis = y_axis pane.overlays = [bar_config] var config := TauXYConfig.new() @@ -336,10 +336,10 @@ func _setup_test_4() -> void: x_axis.type = TauAxisConfig.Type.CONTINUOUS x_axis.scale = TauAxisConfig.Scale.LOGARITHMIC - var left_axis := TauAxisConfig.new() - left_axis.title = "Y (linear)" - left_axis.type = TauAxisConfig.Type.CONTINUOUS - left_axis.scale = TauAxisConfig.Scale.LINEAR + var y_axis := TauAxisConfig.new() + y_axis.title = "Y (linear)" + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LINEAR var bar_config := TauBarConfig.new() bar_config.mode = TauBarConfig.BarMode.STACKED @@ -347,7 +347,7 @@ func _setup_test_4() -> void: bar_config.bar_gap_x_units = 1.01 var pane := TauPaneConfig.new() - pane.y_left_axis = left_axis + pane.y_left_axis = y_axis pane.overlays = [bar_config] var config := TauXYConfig.new() @@ -451,13 +451,13 @@ func _setup_test_7() -> void: x_axis.type = TauAxisConfig.Type.CONTINUOUS x_axis.scale = TauAxisConfig.Scale.LOGARITHMIC - var left_axis := TauAxisConfig.new() - left_axis.title = "Y (linear)" - left_axis.type = TauAxisConfig.Type.CONTINUOUS - left_axis.scale = TauAxisConfig.Scale.LINEAR - left_axis.range_override_enabled = true - left_axis.min_override = 0.01 - left_axis.max_override = 8.00 + var y_axis := TauAxisConfig.new() + y_axis.title = "Y (linear)" + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LINEAR + y_axis.range_override_enabled = true + y_axis.min_override = 0.01 + y_axis.max_override = 8.00 var bar_config := TauBarConfig.new() bar_config.mode = TauBarConfig.BarMode.INDEPENDENT @@ -465,7 +465,7 @@ func _setup_test_7() -> void: bar_config.style.bar_width_px = 25 var pane := TauPaneConfig.new() - pane.y_left_axis = left_axis + pane.y_left_axis = y_axis pane.overlays = [bar_config] var config := TauXYConfig.new() @@ -540,17 +540,17 @@ func _setup_test_8() -> void: x_axis.type = TauAxisConfig.Type.CONTINUOUS x_axis.scale = TauAxisConfig.Scale.LINEAR - var left_axis := TauAxisConfig.new() - left_axis.title = "Y (log scale)" - left_axis.type = TauAxisConfig.Type.CONTINUOUS - left_axis.scale = TauAxisConfig.Scale.LOGARITHMIC - left_axis.include_zero_in_domain = false + var y_axis := TauAxisConfig.new() + y_axis.title = "Y (log scale)" + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LOGARITHMIC + y_axis.include_zero_in_domain = false var bar_config := TauBarConfig.new() bar_config.mode = TauBarConfig.BarMode.INDEPENDENT var pane := TauPaneConfig.new() - pane.y_left_axis = left_axis + pane.y_left_axis = y_axis pane.overlays = [bar_config] var config := TauXYConfig.new() @@ -623,17 +623,17 @@ func _setup_test_9() -> void: x_axis.type = TauAxisConfig.Type.CONTINUOUS x_axis.scale = TauAxisConfig.Scale.LOGARITHMIC - var left_axis := TauAxisConfig.new() - left_axis.title = "Y (log scale)" - left_axis.type = TauAxisConfig.Type.CONTINUOUS - left_axis.scale = TauAxisConfig.Scale.LOGARITHMIC - left_axis.include_zero_in_domain = false + var y_axis := TauAxisConfig.new() + y_axis.title = "Y (log scale)" + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LOGARITHMIC + y_axis.include_zero_in_domain = false var bar_config := TauBarConfig.new() bar_config.mode = TauBarConfig.BarMode.INDEPENDENT var pane := TauPaneConfig.new() - pane.y_left_axis = left_axis + pane.y_left_axis = y_axis pane.overlays = [bar_config] var config := TauXYConfig.new() @@ -678,7 +678,7 @@ func _step_test_9() -> void: dataset.end_batch() #################################################################################################### -# Test 10: Log X with streaming data (append samples) +# Test 10 #################################################################################################### func _setup_test_10() -> void: @@ -704,16 +704,16 @@ func _setup_test_10() -> void: x_axis.type = TauAxisConfig.Type.CONTINUOUS x_axis.scale = TauAxisConfig.Scale.LOGARITHMIC - var left_axis := TauAxisConfig.new() - left_axis.title = "Y (linear)" - left_axis.type = TauAxisConfig.Type.CONTINUOUS - left_axis.scale = TauAxisConfig.Scale.LINEAR + var y_axis := TauAxisConfig.new() + y_axis.title = "Y (linear)" + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LINEAR var bar_config := TauBarConfig.new() bar_config.mode = TauBarConfig.BarMode.GROUPED var pane := TauPaneConfig.new() - pane.y_left_axis = left_axis + pane.y_left_axis = y_axis pane.overlays = [bar_config] var config := TauXYConfig.new() diff --git a/addons/tau-plot/tests/bar/nan_or_inf/test_bar_nan_inf.gd b/addons/tau-plot/tests/bar/nan_or_inf/test_bar_nan_inf.gd new file mode 100644 index 0000000..cf6b18d --- /dev/null +++ b/addons/tau-plot/tests/bar/nan_or_inf/test_bar_nan_inf.gd @@ -0,0 +1,430 @@ +@tool +extends Control + +func _ready() -> void: + _setup_test_1() + _setup_test_2() + _setup_test_3() + _setup_test_4() + _setup_test_5() + _setup_test_6() + _setup_test_7() + _setup_test_8() + +#################################################################################################### +# Test 1 +#################################################################################################### + +func _setup_test_1() -> void: + var series_names := PackedStringArray(["A", "B"]) + var x := PackedFloat64Array([0.0, NAN, 1.0, INF, 2.0, 2.5]) + var y_a := PackedFloat64Array([1.0, 2.0, 1.4, 2.2, 1.1, 1.8]) + var y_b := PackedFloat64Array([1.5, 1.0, 1.6, 2.4, 0.5, 1.2]) + + var dataset := TauPlot.Dataset.make_shared_x_continuous(series_names, x, [y_a, y_b]) + + %TestPlot1.title = "[GROUPED] 2nd and 4th x values are invalid" + + var x_axis := TauAxisConfig.new() + x_axis.type = TauAxisConfig.Type.CONTINUOUS + x_axis.scale = TauAxisConfig.Scale.LINEAR + x_axis.tick_count_preferred = 8 + + var y_axis := TauAxisConfig.new() + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LINEAR + y_axis.include_zero_in_domain = true + + var bar_config := TauBarConfig.new() + bar_config.mode = TauBarConfig.BarMode.GROUPED + bar_config.bar_width_policy = TauBarConfig.BarWidthPolicy.DATA_UNITS + bar_config.bar_width_x_units = 0.1 + + var pane_config := TauPaneConfig.new() + pane_config.y_left_axis = y_axis + pane_config.overlays = [bar_config] + + var config := TauXYConfig.new() + config.x_axis = x_axis + config.panes = [pane_config] + config.style.series_alpha = 0.8 + + var sb_a := TauXYSeriesBinding.new() + sb_a.series_id = dataset.get_series_id_by_index(0) + sb_a.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR + sb_a.y_axis_id = TauPlot.AxisId.LEFT + + var sb_b := TauXYSeriesBinding.new() + sb_b.series_id = dataset.get_series_id_by_index(1) + sb_b.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR + sb_b.y_axis_id = TauPlot.AxisId.LEFT + + var bindings: Array[TauXYSeriesBinding] = [sb_a, sb_b] + + %TestPlot1.plot_xy(dataset, config, bindings) + +#################################################################################################### +# Test 2 +#################################################################################################### + +func _setup_test_2() -> void: + var series_names := PackedStringArray(["A", "B"]) + var x := PackedFloat64Array([0.0, NAN, 1.0, INF, 2.0, 2.5]) + var y_a := PackedFloat64Array([1.0, 2.0, 1.4, 2.2, 1.1, 1.8]) + var y_b := PackedFloat64Array([1.5, 1.0, 1.6, 2.4, 0.5, 1.2]) + + var dataset := TauPlot.Dataset.make_shared_x_continuous(series_names, x, [y_a, y_b]) + + %TestPlot2.title = "[STACKED] 2nd and 4th x values are invalid" + + var x_axis := TauAxisConfig.new() + x_axis.type = TauAxisConfig.Type.CONTINUOUS + x_axis.scale = TauAxisConfig.Scale.LINEAR + x_axis.tick_count_preferred = 8 + + var y_axis := TauAxisConfig.new() + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LINEAR + y_axis.include_zero_in_domain = true + + var bar_config := TauBarConfig.new() + bar_config.mode = TauBarConfig.BarMode.STACKED + bar_config.bar_width_policy = TauBarConfig.BarWidthPolicy.DATA_UNITS + bar_config.bar_width_x_units = 0.4 + + var pane := TauPaneConfig.new() + pane.y_left_axis = y_axis + pane.overlays = [bar_config] + + var config := TauXYConfig.new() + config.x_axis = x_axis + config.panes = [pane] + config.style.series_alpha = 0.8 + + var sb_a := TauXYSeriesBinding.new() + sb_a.series_id = dataset.get_series_id_by_index(0) + sb_a.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR + sb_a.y_axis_id = TauPlot.AxisId.LEFT + + var sb_b := TauXYSeriesBinding.new() + sb_b.series_id = dataset.get_series_id_by_index(1) + sb_b.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR + sb_b.y_axis_id = TauPlot.AxisId.LEFT + + var bindings: Array[TauXYSeriesBinding] = [sb_a, sb_b] + + %TestPlot2.plot_xy(dataset, config, bindings) + +#################################################################################################### +# Test 3 +#################################################################################################### + +func _setup_test_3() -> void: + var series_names := PackedStringArray(["A", "B"]) + var x_a := PackedFloat64Array([0.0, NAN, 1.0, INF, 2.0, 2.5]) + var x_b := PackedFloat64Array([0.25, 0.75, 1.25, 1.75, 2.25]) + var y_a := PackedFloat64Array([1.0, 2.0, 1.4, 2.2, 1.1, 1.8]) + var y_b := PackedFloat64Array([1.5, 1.0, 1.6, 2.4, 0.5]) + + var dataset := TauPlot.Dataset.make_per_series_x_continuous(series_names, [x_a, x_b], [y_a, y_b]) + + %TestPlot3.title = "[INDEPENDENT + PER_SERIES_X] 2nd and 4th x values are invalid for series A" + + var x_axis := TauAxisConfig.new() + x_axis.type = TauAxisConfig.Type.CONTINUOUS + x_axis.scale = TauAxisConfig.Scale.LINEAR + x_axis.tick_count_preferred = 8 + + var y_axis := TauAxisConfig.new() + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LINEAR + y_axis.include_zero_in_domain = true + + var bar_config := TauBarConfig.new() + bar_config.mode = TauBarConfig.BarMode.INDEPENDENT + bar_config.bar_width_policy = TauBarConfig.BarWidthPolicy.DATA_UNITS + bar_config.bar_width_x_units = 0.1 + + var pane := TauPaneConfig.new() + pane.y_left_axis = y_axis + pane.overlays = [bar_config] + + var config := TauXYConfig.new() + config.x_axis = x_axis + config.panes = [pane] + config.style.series_alpha = 0.8 + + var sb_a := TauXYSeriesBinding.new() + sb_a.series_id = dataset.get_series_id_by_index(0) + sb_a.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR + sb_a.y_axis_id = TauPlot.AxisId.LEFT + + var sb_b := TauXYSeriesBinding.new() + sb_b.series_id = dataset.get_series_id_by_index(1) + sb_b.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR + sb_b.y_axis_id = TauPlot.AxisId.LEFT + + var bindings: Array[TauXYSeriesBinding] = [sb_a, sb_b] + + %TestPlot3.plot_xy(dataset, config, bindings) + +#################################################################################################### +# Test 4 +#################################################################################################### + +func _setup_test_4() -> void: + var series_names := PackedStringArray(["A", "B"]) + var x := PackedFloat64Array([0.0, NAN, 1.0, INF, 2.0, 2.5]) + var y_a := PackedFloat64Array([1.0, 2.0, 1.4, 2.2, 1.1, 1.8]) + var y_b := PackedFloat64Array([1.5, 1.0, 1.6, 2.4, 0.5, 0.9]) + + var dataset := TauPlot.Dataset.make_shared_x_continuous(series_names, x, [y_a, y_b]) + + %TestPlot4.title = "[INDEPENDENT + SHARED_X] 2nd and 4th x values are invalid" + + var x_axis := TauAxisConfig.new() + x_axis.type = TauAxisConfig.Type.CONTINUOUS + x_axis.scale = TauAxisConfig.Scale.LINEAR + x_axis.tick_count_preferred = 8 + + var y_axis := TauAxisConfig.new() + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LINEAR + y_axis.include_zero_in_domain = true + + var bar_config := TauBarConfig.new() + bar_config.mode = TauBarConfig.BarMode.INDEPENDENT + bar_config.bar_width_policy = TauBarConfig.BarWidthPolicy.DATA_UNITS + bar_config.bar_width_x_units = 0.1 + + var pane := TauPaneConfig.new() + pane.y_left_axis = y_axis + pane.overlays = [bar_config] + + var config := TauXYConfig.new() + config.x_axis = x_axis + config.panes = [pane] + config.style.series_alpha = 0.8 + + var sb_a := TauXYSeriesBinding.new() + sb_a.series_id = dataset.get_series_id_by_index(0) + sb_a.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR + sb_a.y_axis_id = TauPlot.AxisId.LEFT + + var sb_b := TauXYSeriesBinding.new() + sb_b.series_id = dataset.get_series_id_by_index(1) + sb_b.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR + sb_b.y_axis_id = TauPlot.AxisId.LEFT + + var bindings: Array[TauXYSeriesBinding] = [sb_a, sb_b] + + %TestPlot4.plot_xy(dataset, config, bindings) + +#################################################################################################### +# Test 5 +#################################################################################################### + +func _setup_test_5() -> void: + var series_names := PackedStringArray(["A", "B"]) + var x := PackedFloat64Array([0.0, 0.5, 1.0, 1.5, 2.0, 2.5]) + var y_a := PackedFloat64Array([1.0, NAN, 1.4, INF, 1.1, 1.8]) + var y_b := PackedFloat64Array([1.5, 1.0, 1.6, 2.4, 0.5, 1.2]) + + var dataset := TauPlot.Dataset.make_shared_x_continuous(series_names, x, [y_a, y_b]) + + %TestPlot5.title = "[GROUPED] 2nd and 4th y values are invalid for series A" + + var x_axis := TauAxisConfig.new() + x_axis.type = TauAxisConfig.Type.CONTINUOUS + x_axis.scale = TauAxisConfig.Scale.LINEAR + x_axis.tick_count_preferred = 8 + + var y_axis := TauAxisConfig.new() + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LINEAR + y_axis.include_zero_in_domain = true + + var bar_config := TauBarConfig.new() + bar_config.mode = TauBarConfig.BarMode.GROUPED + bar_config.bar_width_policy = TauBarConfig.BarWidthPolicy.DATA_UNITS + bar_config.bar_width_x_units = 0.1 + + var pane_config := TauPaneConfig.new() + pane_config.y_left_axis = y_axis + pane_config.overlays = [bar_config] + + var config := TauXYConfig.new() + config.x_axis = x_axis + config.panes = [pane_config] + config.style.series_alpha = 0.8 + + var sb_a := TauXYSeriesBinding.new() + sb_a.series_id = dataset.get_series_id_by_index(0) + sb_a.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR + sb_a.y_axis_id = TauPlot.AxisId.LEFT + + var sb_b := TauXYSeriesBinding.new() + sb_b.series_id = dataset.get_series_id_by_index(1) + sb_b.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR + sb_b.y_axis_id = TauPlot.AxisId.LEFT + + var bindings: Array[TauXYSeriesBinding] = [sb_a, sb_b] + + %TestPlot5.plot_xy(dataset, config, bindings) + +#################################################################################################### +# Test 6 +#################################################################################################### + +func _setup_test_6() -> void: + var series_names := PackedStringArray(["A", "B"]) + var x := PackedFloat64Array([0.0, 0.5, 1.0, 1.5, 2.0, 2.5]) + var y_a := PackedFloat64Array([1.0, NAN, 1.4, INF, 1.1, 1.8]) + var y_b := PackedFloat64Array([1.5, 1.0, 1.6, 2.4, 0.5, 1.2]) + + var dataset := TauPlot.Dataset.make_shared_x_continuous(series_names, x, [y_a, y_b]) + + %TestPlot6.title = "[STACKED] 2nd and 4th y values are invalid for series A" + + var x_axis := TauAxisConfig.new() + x_axis.type = TauAxisConfig.Type.CONTINUOUS + x_axis.scale = TauAxisConfig.Scale.LINEAR + x_axis.tick_count_preferred = 8 + + var y_axis := TauAxisConfig.new() + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LINEAR + y_axis.include_zero_in_domain = true + + var bar_config := TauBarConfig.new() + bar_config.mode = TauBarConfig.BarMode.STACKED + bar_config.bar_width_policy = TauBarConfig.BarWidthPolicy.DATA_UNITS + bar_config.bar_width_x_units = 0.4 + + var pane := TauPaneConfig.new() + pane.y_left_axis = y_axis + pane.overlays = [bar_config] + + var config := TauXYConfig.new() + config.x_axis = x_axis + config.panes = [pane] + config.style.series_alpha = 0.8 + + var sb_a := TauXYSeriesBinding.new() + sb_a.series_id = dataset.get_series_id_by_index(0) + sb_a.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR + sb_a.y_axis_id = TauPlot.AxisId.LEFT + + var sb_b := TauXYSeriesBinding.new() + sb_b.series_id = dataset.get_series_id_by_index(1) + sb_b.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR + sb_b.y_axis_id = TauPlot.AxisId.LEFT + + var bindings: Array[TauXYSeriesBinding] = [sb_a, sb_b] + + %TestPlot6.plot_xy(dataset, config, bindings) + +#################################################################################################### +# Test 7 +#################################################################################################### + +func _setup_test_7() -> void: + var series_names := PackedStringArray(["A", "B"]) + var x_a := PackedFloat64Array([0.0, 0.5, 1.0, 1.5, 2.0, 2.5]) + var x_b := PackedFloat64Array([0.25, 0.75, 1.25, 1.75, 2.25]) + var y_a := PackedFloat64Array([1.0, NAN, 1.4, INF, 1.1, 1.8]) + var y_b := PackedFloat64Array([1.5, 1.0, 1.6, 2.4, 0.5]) + + var dataset := TauPlot.Dataset.make_per_series_x_continuous(series_names, [x_a, x_b], [y_a, y_b]) + + %TestPlot7.title = "[INDEPENDENT + PER_SERIES_X] 2nd and 4th y values are invalid for series A" + + var x_axis := TauAxisConfig.new() + x_axis.type = TauAxisConfig.Type.CONTINUOUS + x_axis.scale = TauAxisConfig.Scale.LINEAR + x_axis.tick_count_preferred = 8 + + var y_axis := TauAxisConfig.new() + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LINEAR + y_axis.include_zero_in_domain = true + + var bar_config := TauBarConfig.new() + bar_config.mode = TauBarConfig.BarMode.INDEPENDENT + bar_config.bar_width_policy = TauBarConfig.BarWidthPolicy.DATA_UNITS + bar_config.bar_width_x_units = 0.1 + + var pane := TauPaneConfig.new() + pane.y_left_axis = y_axis + pane.overlays = [bar_config] + + var config := TauXYConfig.new() + config.x_axis = x_axis + config.panes = [pane] + config.style.series_alpha = 0.8 + + var sb_a := TauXYSeriesBinding.new() + sb_a.series_id = dataset.get_series_id_by_index(0) + sb_a.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR + sb_a.y_axis_id = TauPlot.AxisId.LEFT + + var sb_b := TauXYSeriesBinding.new() + sb_b.series_id = dataset.get_series_id_by_index(1) + sb_b.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR + sb_b.y_axis_id = TauPlot.AxisId.LEFT + + var bindings: Array[TauXYSeriesBinding] = [sb_a, sb_b] + + %TestPlot7.plot_xy(dataset, config, bindings) + +#################################################################################################### +# Test 8 +#################################################################################################### + +func _setup_test_8() -> void: + var series_names := PackedStringArray(["A", "B"]) + var x := PackedFloat64Array([0.0, 0.5, 1.0, 1.5, 2.0, 2.5]) + var y_a := PackedFloat64Array([1.0, NAN, 1.4, INF, 1.1, 1.8]) + var y_b := PackedFloat64Array([1.5, 1.0, 1.6, 2.4, 0.5, 0.9]) + + var dataset := TauPlot.Dataset.make_shared_x_continuous(series_names, x, [y_a, y_b]) + + %TestPlot8.title = "[INDEPENDENT + SHARED_X] 2nd and 4th y values are invalid for series A" + + var x_axis := TauAxisConfig.new() + x_axis.type = TauAxisConfig.Type.CONTINUOUS + x_axis.scale = TauAxisConfig.Scale.LINEAR + x_axis.tick_count_preferred = 8 + + var y_axis := TauAxisConfig.new() + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LINEAR + y_axis.include_zero_in_domain = true + + var bar_config := TauBarConfig.new() + bar_config.mode = TauBarConfig.BarMode.INDEPENDENT + bar_config.bar_width_policy = TauBarConfig.BarWidthPolicy.DATA_UNITS + bar_config.bar_width_x_units = 0.1 + + var pane := TauPaneConfig.new() + pane.y_left_axis = y_axis + pane.overlays = [bar_config] + + var config := TauXYConfig.new() + config.x_axis = x_axis + config.panes = [pane] + config.style.series_alpha = 0.8 + + var sb_a := TauXYSeriesBinding.new() + sb_a.series_id = dataset.get_series_id_by_index(0) + sb_a.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR + sb_a.y_axis_id = TauPlot.AxisId.LEFT + + var sb_b := TauXYSeriesBinding.new() + sb_b.series_id = dataset.get_series_id_by_index(1) + sb_b.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR + sb_b.y_axis_id = TauPlot.AxisId.LEFT + + var bindings: Array[TauXYSeriesBinding] = [sb_a, sb_b] + + %TestPlot8.plot_xy(dataset, config, bindings) diff --git a/addons/tau-plot/tests/bar/nan_or_inf/test_bar_nan_inf.gd.uid b/addons/tau-plot/tests/bar/nan_or_inf/test_bar_nan_inf.gd.uid new file mode 100644 index 0000000..bc2e5e7 --- /dev/null +++ b/addons/tau-plot/tests/bar/nan_or_inf/test_bar_nan_inf.gd.uid @@ -0,0 +1 @@ +uid://cr6trpr4fsghd diff --git a/addons/tau-plot/tests/bar/nan_or_inf/test_bar_nan_inf.tscn b/addons/tau-plot/tests/bar/nan_or_inf/test_bar_nan_inf.tscn new file mode 100644 index 0000000..c6dcaf0 --- /dev/null +++ b/addons/tau-plot/tests/bar/nan_or_inf/test_bar_nan_inf.tscn @@ -0,0 +1,105 @@ +[gd_scene load_steps=3 format=3 uid="uid://b7hl3ojpsl6ia"] + +[ext_resource type="Script" uid="uid://cr6trpr4fsghd" path="res://addons/tau-plot/tests/bar/nan_or_inf/test_bar_nan_inf.gd" id="1_06tdf"] +[ext_resource type="Script" uid="uid://dnhvsf2wip771" path="res://addons/tau-plot/plot/plot.gd" id="2_64423"] + +[node name="Bars" type="VBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_06tdf") + +[node name="Title" type="Label" parent="."] +layout_mode = 2 +theme_override_font_sizes/font_size = 32 +text = "Test nan and inf values" +horizontal_alignment = 1 + +[node name="GridContainer" type="GridContainer" parent="."] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_constants/h_separation = 0 +theme_override_constants/v_separation = 0 +columns = 4 + +[node name="TestPlot1" type="PanelContainer" parent="GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_type_variation = &"TauPlot" +script = ExtResource("2_64423") +title = "[GROUPED] 2nd and 4th x values are invalid" +metadata/_custom_type_script = "uid://dnhvsf2wip771" + +[node name="TestPlot2" type="PanelContainer" parent="GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_type_variation = &"TauPlot" +script = ExtResource("2_64423") +title = "[STACKED] 2nd and 4th x values are invalid" +metadata/_custom_type_script = "uid://dnhvsf2wip771" + +[node name="TestPlot3" type="PanelContainer" parent="GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_type_variation = &"TauPlot" +script = ExtResource("2_64423") +title = "[INDEPENDENT + PER_SERIES_X] 2nd and 4th x values are invalid for series A" +metadata/_custom_type_script = "uid://dnhvsf2wip771" + +[node name="TestPlot4" type="PanelContainer" parent="GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_type_variation = &"TauPlot" +script = ExtResource("2_64423") +title = "[INDEPENDENT + SHARED_X] 2nd and 4th x values are invalid" +metadata/_custom_type_script = "uid://dnhvsf2wip771" + +[node name="TestPlot5" type="PanelContainer" parent="GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_type_variation = &"TauPlot" +script = ExtResource("2_64423") +title = "[GROUPED] 2nd and 4th y values are invalid for series A" +metadata/_custom_type_script = "uid://dnhvsf2wip771" + +[node name="TestPlot6" type="PanelContainer" parent="GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_type_variation = &"TauPlot" +script = ExtResource("2_64423") +title = "[STACKED] 2nd and 4th y values are invalid for series A" +metadata/_custom_type_script = "uid://dnhvsf2wip771" + +[node name="TestPlot7" type="PanelContainer" parent="GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_type_variation = &"TauPlot" +script = ExtResource("2_64423") +title = "[INDEPENDENT + PER_SERIES_X] 2nd and 4th y values are invalid for series A" +metadata/_custom_type_script = "uid://dnhvsf2wip771" + +[node name="TestPlot8" type="PanelContainer" parent="GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_type_variation = &"TauPlot" +script = ExtResource("2_64423") +title = "[INDEPENDENT + SHARED_X] 2nd and 4th y values are invalid for series A" +metadata/_custom_type_script = "uid://dnhvsf2wip771" diff --git a/addons/tau-plot/tests/bar/z_order/test_bar_z_order.gd b/addons/tau-plot/tests/bar/z_order/test_bar_z_order.gd index 5fc122b..b2170ec 100644 --- a/addons/tau-plot/tests/bar/z_order/test_bar_z_order.gd +++ b/addons/tau-plot/tests/bar/z_order/test_bar_z_order.gd @@ -125,7 +125,7 @@ func _setup_test_2() -> void: var dataset := TauPlot.Dataset.make_shared_x_continuous(series_names, x, [y_a, y_b]) _datasets.append(dataset) - %TestPlot2.title = "[STACKED] z-order = SERIES_ORDER" + %TestPlot2.title = "[STACKED] z-order = SERIES_ORDER" var x_axis := TauAxisConfig.new() x_axis.title = "X" @@ -197,7 +197,7 @@ func _setup_test_3() -> void: var dataset := TauPlot.Dataset.make_per_series_x_continuous(series_names, [x_a, x_b], [y_a, y_b]) _datasets.append(dataset) - %TestPlot3.title = "[INDEPENDENT] z-order = SERIES_ORDER" + %TestPlot3.title = "[INDEPENDENT] z-order = SERIES_ORDER" var x_axis := TauAxisConfig.new() x_axis.title = "X" @@ -340,7 +340,7 @@ func _setup_test_5() -> void: var dataset := TauPlot.Dataset.make_shared_x_continuous(series_names, x, [y_a, y_b]) _datasets.append(dataset) - %TestPlot5.title = "[STACKED] z-order = REVERSE_SERIES_ORDER" + %TestPlot5.title = "[STACKED] z-order = REVERSE_SERIES_ORDER" var x_axis := TauAxisConfig.new() x_axis.title = "X" @@ -412,7 +412,7 @@ func _setup_test_6() -> void: var dataset := TauPlot.Dataset.make_per_series_x_continuous(series_names, [x_a, x_b], [y_a, y_b]) _datasets.append(dataset) - %TestPlot6.title = "[INDEPENDENT] z-order = REVERSE_SERIES_ORDER" + %TestPlot6.title = "[INDEPENDENT] z-order = REVERSE_SERIES_ORDER" var x_axis := TauAxisConfig.new() x_axis.title = "X" diff --git a/addons/tau-plot/tests/scatter/nan_or_inf/test_scatter_nan_inf.gd b/addons/tau-plot/tests/scatter/nan_or_inf/test_scatter_nan_inf.gd new file mode 100644 index 0000000..b9ef0e6 --- /dev/null +++ b/addons/tau-plot/tests/scatter/nan_or_inf/test_scatter_nan_inf.gd @@ -0,0 +1,214 @@ +@tool +extends Control + +func _ready() -> void: + _setup_test_1() + _setup_test_2() + _setup_test_3() + _setup_test_4() + +#################################################################################################### +# Test 1 +#################################################################################################### + +func _setup_test_1() -> void: + var series_names := PackedStringArray(["A", "B"]) + var x := PackedFloat64Array([0.0, NAN, 1.0, INF, 2.0, 2.5]) + var y_a := PackedFloat64Array([1.0, 2.0, 1.4, 2.2, 1.1, 1.8]) + var y_b := PackedFloat64Array([1.5, 1.0, 1.6, 2.4, 0.5, 1.2]) + + var dataset := TauPlot.Dataset.make_shared_x_continuous(series_names, x, [y_a, y_b]) + + %TestPlot1.title = "[SHARED_X] 2nd and 4th x values are invalid" + + var x_axis := TauAxisConfig.new() + x_axis.type = TauAxisConfig.Type.CONTINUOUS + x_axis.scale = TauAxisConfig.Scale.LINEAR + x_axis.tick_count_preferred = 8 + + var y_axis := TauAxisConfig.new() + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LINEAR + y_axis.include_zero_in_domain = true + + var scatter_config := TauScatterConfig.new() + scatter_config.marker_size_policy = TauScatterConfig.MarkerSizePolicy.DATA_UNITS + scatter_config.marker_size_data_units = 0.1 + + var pane_config := TauPaneConfig.new() + pane_config.y_left_axis = y_axis + pane_config.overlays = [scatter_config] + + var config := TauXYConfig.new() + config.x_axis = x_axis + config.panes = [pane_config] + config.style.series_alpha = 0.8 + + var sb_a := TauXYSeriesBinding.new() + sb_a.series_id = dataset.get_series_id_by_index(0) + sb_a.overlay_type = TauXYSeriesBinding.PaneOverlayType.SCATTER + sb_a.y_axis_id = TauPlot.AxisId.LEFT + + var sb_b := TauXYSeriesBinding.new() + sb_b.series_id = dataset.get_series_id_by_index(1) + sb_b.overlay_type = TauXYSeriesBinding.PaneOverlayType.SCATTER + sb_b.y_axis_id = TauPlot.AxisId.LEFT + + var bindings: Array[TauXYSeriesBinding] = [sb_a, sb_b] + + %TestPlot1.plot_xy(dataset, config, bindings) + +#################################################################################################### +# Test 2 +#################################################################################################### + +func _setup_test_2() -> void: + var series_names := PackedStringArray(["A", "B"]) + var x_a := PackedFloat64Array([0.0, NAN, 1.0, INF, 2.0, 2.5]) + var x_b := PackedFloat64Array([0.25, 0.75, 1.25, 1.75, 2.25]) + var y_a := PackedFloat64Array([1.0, 2.0, 1.4, 2.2, 1.1, 1.8]) + var y_b := PackedFloat64Array([1.5, 1.0, 1.6, 2.4, 0.5]) + + var dataset := TauPlot.Dataset.make_per_series_x_continuous(series_names, [x_a, x_b], [y_a, y_b]) + + %TestPlot2.title = "[PER_SERIES_X] 2nd and 4th x values are invalid for series A" + + var x_axis := TauAxisConfig.new() + x_axis.type = TauAxisConfig.Type.CONTINUOUS + x_axis.scale = TauAxisConfig.Scale.LINEAR + x_axis.tick_count_preferred = 8 + + var y_axis := TauAxisConfig.new() + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LINEAR + y_axis.include_zero_in_domain = true + + var scatter_config := TauScatterConfig.new() + scatter_config.marker_size_policy = TauScatterConfig.MarkerSizePolicy.DATA_UNITS + scatter_config.marker_size_data_units = 0.1 + + var pane := TauPaneConfig.new() + pane.y_left_axis = y_axis + pane.overlays = [scatter_config] + + var config := TauXYConfig.new() + config.x_axis = x_axis + config.panes = [pane] + config.style.series_alpha = 0.8 + + var sb_a := TauXYSeriesBinding.new() + sb_a.series_id = dataset.get_series_id_by_index(0) + sb_a.overlay_type = TauXYSeriesBinding.PaneOverlayType.SCATTER + sb_a.y_axis_id = TauPlot.AxisId.LEFT + + var sb_b := TauXYSeriesBinding.new() + sb_b.series_id = dataset.get_series_id_by_index(1) + sb_b.overlay_type = TauXYSeriesBinding.PaneOverlayType.SCATTER + sb_b.y_axis_id = TauPlot.AxisId.LEFT + + var bindings: Array[TauXYSeriesBinding] = [sb_a, sb_b] + + %TestPlot2.plot_xy(dataset, config, bindings) + +#################################################################################################### +# Test 5 +#################################################################################################### + +func _setup_test_3() -> void: + var series_names := PackedStringArray(["A", "B"]) + var x := PackedFloat64Array([0.0, 0.5, 1.0, 1.5, 2.0, 2.5]) + var y_a := PackedFloat64Array([1.0, NAN, 1.4, INF, 1.1, 1.8]) + var y_b := PackedFloat64Array([1.5, 1.0, 1.6, 2.4, 0.5, 1.2]) + + var dataset := TauPlot.Dataset.make_shared_x_continuous(series_names, x, [y_a, y_b]) + + %TestPlot3.title = "[SHARED_X] 2nd and 4th y values are invalid for series A" + + var x_axis := TauAxisConfig.new() + x_axis.type = TauAxisConfig.Type.CONTINUOUS + x_axis.scale = TauAxisConfig.Scale.LINEAR + x_axis.tick_count_preferred = 8 + + var y_axis := TauAxisConfig.new() + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LINEAR + y_axis.include_zero_in_domain = true + + var scatter_config := TauScatterConfig.new() + scatter_config.marker_size_policy = TauScatterConfig.MarkerSizePolicy.DATA_UNITS + scatter_config.marker_size_data_units = 0.1 + + var pane_config := TauPaneConfig.new() + pane_config.y_left_axis = y_axis + pane_config.overlays = [scatter_config] + + var config := TauXYConfig.new() + config.x_axis = x_axis + config.panes = [pane_config] + config.style.series_alpha = 0.8 + + var sb_a := TauXYSeriesBinding.new() + sb_a.series_id = dataset.get_series_id_by_index(0) + sb_a.overlay_type = TauXYSeriesBinding.PaneOverlayType.SCATTER + sb_a.y_axis_id = TauPlot.AxisId.LEFT + + var sb_b := TauXYSeriesBinding.new() + sb_b.series_id = dataset.get_series_id_by_index(1) + sb_b.overlay_type = TauXYSeriesBinding.PaneOverlayType.SCATTER + sb_b.y_axis_id = TauPlot.AxisId.LEFT + + var bindings: Array[TauXYSeriesBinding] = [sb_a, sb_b] + + %TestPlot3.plot_xy(dataset, config, bindings) + +#################################################################################################### +# Test 4 +#################################################################################################### + +func _setup_test_4() -> void: + var series_names := PackedStringArray(["A", "B"]) + var x_a := PackedFloat64Array([0.0, 0.5, 1.0, 1.5, 2.0, 2.5]) + var x_b := PackedFloat64Array([0.25, 0.75, 1.25, 1.75, 2.25]) + var y_a := PackedFloat64Array([1.0, NAN, 1.4, INF, 1.1, 1.8]) + var y_b := PackedFloat64Array([1.5, 1.0, 1.6, 2.4, 0.5]) + + var dataset := TauPlot.Dataset.make_per_series_x_continuous(series_names, [x_a, x_b], [y_a, y_b]) + + %TestPlot4.title = "[PER_SERIES_X] 2nd and 4th y values are invalid for series A" + + var x_axis := TauAxisConfig.new() + x_axis.type = TauAxisConfig.Type.CONTINUOUS + x_axis.scale = TauAxisConfig.Scale.LINEAR + x_axis.tick_count_preferred = 8 + + var y_axis := TauAxisConfig.new() + y_axis.type = TauAxisConfig.Type.CONTINUOUS + y_axis.scale = TauAxisConfig.Scale.LINEAR + y_axis.include_zero_in_domain = true + + var scatter_config := TauScatterConfig.new() + scatter_config.marker_size_policy = TauScatterConfig.MarkerSizePolicy.DATA_UNITS + scatter_config.marker_size_data_units = 0.1 + + var pane := TauPaneConfig.new() + pane.y_left_axis = y_axis + pane.overlays = [scatter_config] + + var config := TauXYConfig.new() + config.x_axis = x_axis + config.panes = [pane] + config.style.series_alpha = 0.8 + + var sb_a := TauXYSeriesBinding.new() + sb_a.series_id = dataset.get_series_id_by_index(0) + sb_a.overlay_type = TauXYSeriesBinding.PaneOverlayType.SCATTER + sb_a.y_axis_id = TauPlot.AxisId.LEFT + + var sb_b := TauXYSeriesBinding.new() + sb_b.series_id = dataset.get_series_id_by_index(1) + sb_b.overlay_type = TauXYSeriesBinding.PaneOverlayType.SCATTER + sb_b.y_axis_id = TauPlot.AxisId.LEFT + + var bindings: Array[TauXYSeriesBinding] = [sb_a, sb_b] + + %TestPlot4.plot_xy(dataset, config, bindings) diff --git a/addons/tau-plot/tests/scatter/nan_or_inf/test_scatter_nan_inf.gd.uid b/addons/tau-plot/tests/scatter/nan_or_inf/test_scatter_nan_inf.gd.uid new file mode 100644 index 0000000..ccbd746 --- /dev/null +++ b/addons/tau-plot/tests/scatter/nan_or_inf/test_scatter_nan_inf.gd.uid @@ -0,0 +1 @@ +uid://dsbmj6tke0b4 diff --git a/addons/tau-plot/tests/scatter/nan_or_inf/test_scatter_nan_inf.tscn b/addons/tau-plot/tests/scatter/nan_or_inf/test_scatter_nan_inf.tscn new file mode 100644 index 0000000..88c7f78 --- /dev/null +++ b/addons/tau-plot/tests/scatter/nan_or_inf/test_scatter_nan_inf.tscn @@ -0,0 +1,65 @@ +[gd_scene load_steps=3 format=3 uid="uid://7jsb87nmlbnv"] + +[ext_resource type="Script" uid="uid://dsbmj6tke0b4" path="res://addons/tau-plot/tests/scatter/nan_or_inf/test_scatter_nan_inf.gd" id="1_ifq6h"] +[ext_resource type="Script" uid="uid://dnhvsf2wip771" path="res://addons/tau-plot/plot/plot.gd" id="2_yiywv"] + +[node name="Scatters" type="VBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_ifq6h") + +[node name="Title" type="Label" parent="."] +layout_mode = 2 +theme_override_font_sizes/font_size = 32 +text = "Test nan and inf values" +horizontal_alignment = 1 + +[node name="GridContainer" type="GridContainer" parent="."] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_constants/h_separation = 0 +theme_override_constants/v_separation = 0 +columns = 2 + +[node name="TestPlot1" type="PanelContainer" parent="GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_type_variation = &"TauPlot" +script = ExtResource("2_yiywv") +title = "[SHARED_X] 2nd and 4th x values are invalid" +metadata/_custom_type_script = "uid://dnhvsf2wip771" + +[node name="TestPlot2" type="PanelContainer" parent="GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_type_variation = &"TauPlot" +script = ExtResource("2_yiywv") +title = "[PER_SERIES_X] 2nd and 4th x values are invalid for series A" +metadata/_custom_type_script = "uid://dnhvsf2wip771" + +[node name="TestPlot3" type="PanelContainer" parent="GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_type_variation = &"TauPlot" +script = ExtResource("2_yiywv") +title = "[SHARED_X] 2nd and 4th y values are invalid for series A" +metadata/_custom_type_script = "uid://dnhvsf2wip771" + +[node name="TestPlot4" type="PanelContainer" parent="GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_type_variation = &"TauPlot" +script = ExtResource("2_yiywv") +title = "[PER_SERIES_X] 2nd and 4th y values are invalid for series A" +metadata/_custom_type_script = "uid://dnhvsf2wip771"