Example Scripts for Automated VGS Testing
Vulcan Gantt Scheduler
Use these lava scripts for automated testing. These tests will be able to run many of the most common options to setup a project.
Opening VGS
# Filename: OpenVGS-Lava.lava # Note: Macros created by this version of Vulcan, may not work as expected in # future versions. use utf8; use Macro; use Lava; use Gantt; use strict; SetActiveWindow("PRIMARY"); RunMenu("VGS_OPEN_PROJECT:Lava.vgantt","abort", "FINISH") || die "Macro mismatch.\n";
Summary Report Export
# Filename: SummaryReportExport.lava # Note: Macros created by this version of Vulcan, may not work as expected in # future versions. use utf8; use Macro; use Cwd; use Lava; use Gantt; use strict; SetActiveWindow("PRIMARY"); # Open log open(my $log, '>>', 'SummaryReport.log'); # Set Row Result Gantt::SummaryReportSetRowResult(1); if (Gantt::HasError()) { # Error print $log "Failed to set row result for report.\n"; } else { print $log "Set row results for report\n"; } # Export my $dir = cwd(); my $file = "$dir/LavaReport.csv"; Gantt::ExportCurrentReport("$file"); if (Gantt::HasError()) { # Error my $error = Gantt::GetGanttLastError(); print $log "Error: $error\n"; print $log "$file\n"; print $log "Failed to export LavaReport without row results.\n"; } else { print $log "Successfully exported report with row results.\n"; } # Close log close $log; Gantt::Close(0);
Reserve Results
# Filename: ReserveResults.lava # Note: Macros created by this version of Vulcan, may not work as expected in # future versions. use utf8; use Macro; use Lava; use strict; use Gantt; SetActiveWindow("PRIMARY"); sub CheckResult { my($log, $hasErrorMessage, $message) = @_; if (Gantt::HasError()) { print $log "$hasErrorMessage\n"; } else { print $log "$message\n"; } } # Get Reserves Log and open log file my $result = Gantt::ReservesResults(); open(my $log, '>>', 'Reserves.log'); print $log "$result\n\n"; # Fail to get results Gantt::GetReservesByActivityAtt("", "P6610LH_SL100_01O", "RES:au_ivd"); CheckResult($log, "Expected failure when missing activity type.", "Error: retrieved results without an activity type."); Gantt::GetReservesByActivityAtt("Stope Prep", "", "RES:au_ivd"); CheckResult($log, "Expected failure when missing activity name.", "Error: retrieved results with missing activity name."); Gantt::GetReservesByActivityAtt("Garbage", "Garbage", "RES:au_ivd"); CheckResult($log, "Expected failure when trying to find non-existant activity.", "Error: retrieved results for missing activity."); Gantt::GetReservesByActivityAtt("Stope Prep", "P6610LH_SL100_01O", "Garbage"); CheckResult($log, "Expected failure when missing attribute.", "Error: retrieved results with missing attribute."); Gantt::GetReservesByActivityAtt("Stope Prep", "P6610LH_SL100_01O", "Name"); CheckResult($log, "Expected failure when attribute has no reserve results.", "Error: retrieved results for attribute without reserves."); Gantt::ActivityAttDates("", "P6610LH_SL100_01O", "RES:au_ivd"); CheckResult($log, "Expected failure when missing activity type.", "Error: retrieved results with missing activity type."); Gantt::ActivityAttDates("Stope Prep", "", "RES:au_ivd"); CheckResult($log, "Expected failure when missing activity name.", "Error: retrieved results with missing activity name."); Gantt::ActivityAttDates("Garbage", "Garbage", "RES:au_ivd"); CheckResult($log, "Expected failure when trying to find non-existant activity.", "Error: retrieved results for missing activity."); Gantt::ActivityAttDates("Stope Prep", "P6610LH_SL100_01O", "Garbage"); CheckResult($log, "Expected failure when missing attribute.", "Error: retrieved results with missing attribute."); Gantt::ActivityAttDates("Stope Prep", "P6610LH_SL100_01O", "Name"); CheckResult($log, "Expected failure when attribute has no reserve results.", "Error: retrieved result for attribute without reserves."); # Get some individual results print $log "\nIndividual results:\n"; my $errorMsg; my @results = Gantt::GetReservesByActivityAtt("Stope Prep", "P6610LH_SL100_01O", "RES:au_ivd"); if (Gantt::HasError()) { $errorMsg = Gantt::GetGanttLastError(); $result = "Error: failed to get results with Stope Prep activity type.\n$errorMsg"; } else { $result = "@results[0]\t@results[1]\t@results[2]\t@results[3]\n"; } @results = Gantt::GetReservesByActivityAtt("Stoping", "P6610LH_BS050_01O", "RES:au_ivd"); if (Gantt::HasError()) { $errorMsg = Gantt::GetGanttLastError(); $result = "Error: failed to get results with Stoping activity type.\n$errorMsg"; } else { $result = "$result@results[0]\t@results[1]\t@results[2]\t@results[3]\n"; } @results = Gantt::ActivityAttDates("Stope Prep", "P6610LH_SL100_01O", "RES:au_ivd"); if (Gantt::HasError()) { $errorMsg = Gantt::GetGanttLastError(); $result = "Error: failed to get date results with Stope Prep activity type.\n$errorMsg"; } else { $result = "$result@results[0]\t@results[1]\t@results[2]\t@results[3]\n"; } @results = Gantt::ActivityAttDates("Stoping", "P6610LH_BS050_01O", "RES:au_ivd"); if (Gantt::HasError()) { $errorMsg = Gantt::GetGanttLastError(); $result = "Error: failed to get date results with Stoping activity type.\n$errorMsg"; } else { $result = "$result@results[0]\t@results[1]\t@results[2]\t@results[3]\n"; } print $log "$result"; # Close log close $log; Gantt::Close(0);
Summary Report
# Filename: SummaryReport.lava # Note: Macros created by this version of Vulcan, may not work as expected in # future versions. use utf8; use Macro; use Cwd; use Lava; use Gantt; use strict; SetActiveWindow("PRIMARY"); sub CheckResult { my($log, $hasErrorMessage, $message) = @_; if (Gantt::HasError()) { print $log "$hasErrorMessage\n"; } else { print $log "$message\n"; } } # Remove log file unlink("SummaryReport.log"); # Open log open(my $log, '>>', 'SummaryReport.log'); # Add Report Gantt::AddSummaryReport("LavaReport"); CheckResult($log, "Failed to add report.", "Successfully added report."); # Add duplicate report Gantt::AddSummaryReport("LavaReport"); CheckResult($log, "Expected failure to add report due to duplicate name.", "Error: report added with duplicate name."); # Add report with missing name Gantt::AddSummaryReport(""); CheckResult($log, "Expected failure to add report due to missing name.", "Error: report added with no name."); # Add report item no report Gantt::SummaryReportAddReportItem("Garbage", "Volume", "Volume", ""); CheckResult($log, "Expected failure to add report item due to missing report.", "Error: added report item to missing report."); # Add report item no name Gantt::SummaryReportAddReportItem("LavaReport", "", "Volume", ""); CheckResult($log, "Expected failure to add report item due to missing name.", "Error: added report item with no name."); # Add report item missing att Gantt::SummaryReportAddReportItem("LavaReport", "Volume", "", ""); CheckResult($log, "Expected failure to add report item due to missing att.", "Error: added report item with no attribute or expression."); # Add report item Gantt::SummaryReportAddReportItem("LavaReport", "Volume", "Volume", ""); CheckResult($log, "Failure to add report item.", "Successfully added report item."); # Add report item w/weight missing Gantt::SummaryReportAddReportItem("LavaReport", "Au", "RES:au_ivd", "garbage"); CheckResult($log, "Expected failure to add report item due to weight missing att.", "Error: added report item with missing weight attribute."); # Add report item w/weight Gantt::SummaryReportAddReportItem("LavaReport", "Au", "RES:au_ivd", "Total Mass"); CheckResult($log, "Failure to add report item w/weight.", "Successfully added report item w/weight."); # Add report item duplicate name Gantt::SummaryReportAddReportItem("LavaReport", "Au", "RES:au_ivd", ""); CheckResult($log, "Expected failure to add report item due to duplicate item name.", "Error: added report item with duplicate name."); # Add report item with blank expression Gantt::SummaryReportAddReportItemExpression("LavaReport", "Net Profit", ""); CheckResult($log, "Expected failure to add report item due to missing expression.", "Error: added report item with empty expression."); # Add report item with expression Gantt::SummaryReportAddReportItemExpression("LavaReport", "Net Profit", "[ATT:Revenue] - [ATT:Cost]"); CheckResult($log, "Failure to add report item with expression.", "Successfully added report item with expression."); # Remove report item missing input Gantt::SummaryReportRemoveReportItem("", "Volume"); CheckResult($log, "Expected failure to remove item due to missing report.", "Error: claims to have remove a report item from a missing report."); # Remove report item Gantt::SummaryReportRemoveReportItem("LavaReport", "Au"); CheckResult($log, "Failure to remove report item.", "Successfully removed report item."); # Add report item Gantt::SummaryReportAddReportItem("LavaReport", "Au", "RES:au_ivd", ""); CheckResult($log, "Failure to add report item.", "Successfully added report item."); # Update report item w/weight Gantt::SummaryReportUpdateReportItem("LavaReport", "Au", "garbage", "Total Mass"); CheckResult($log, "Expected failure to update item due to missing att.", "Error: updated report item to use missing attribute."); # Update report item w/weight Gantt::SummaryReportUpdateReportItem("Garbage", "Au", "RES:au_ivd", "Total Mass"); CheckResult($log, "Expected failure to update item due to missing report.", "Error: claims to have updated report item in missing report."); # Update report item w/weight Gantt::SummaryReportUpdateReportItem("LavaReport", "Au", "RES:au_ivd", "garbage"); CheckResult($log, "Expected failure to update item due to missing weight att.", "Error: updated report item to use missing weight att."); # Update report item w/weight Gantt::SummaryReportUpdateReportItem("LavaReport", "Au", "RES:au_ivd", "Total Mass"); CheckResult($log, "Failure to update report item w/weight.", "Successfully updated report item with weight att."); # Update report item missing expression Gantt::SummaryReportUpdateReportItemExpression("LavaReport", "Net Profit", ""); CheckResult($log, "Expected failure to update item due to missing expression.", "Error: updated report item with empty expression."); # Update report item w/expression Gantt::SummaryReportUpdateReportItemExpression("LavaReport", "Net Profit", "([ATT:Revenue] - [ATT:Cost])*0.85"); CheckResult($log, "Failure to update report item w/expression.", "Successfully updated expression for report item."); # Set Result Type Gantt::SummaryReportSetResultType("", 1); CheckResult($log, "Expected failure to update report due to missing report.", "Error: set result type for missing report."); # Set Result Type Gantt::SummaryReportSetResultType("LavaReport", 1); CheckResult($log, "Failure to update report to use completed value.", "Successfully set result type for report."); # Set Result Type Gantt::SummaryReportSetDefaultResultType(""); CheckResult($log, "Expected failure to update report due to missing report.", "Error: set result type for missing report."); # Set Result Type Gantt::SummaryReportSetDefaultResultType("LavaReport"); CheckResult($log, "Failure to update report to use total value.", "Successfully set default result type for report."); # Apply Report Gantt::ApplyReport("Garbage"); CheckResult($log, "Expected failure to update report due to missing report.", "Error: set missing report as current (not empty or null)."); # Apply Report Gantt::ApplyReport("LavaReport"); CheckResult($log, "Failed to set current report.", "Successfully set report."); # Export Gantt::ExportCurrentReport(""); CheckResult($log, "Expected failure to update report due to missing filename.", "Error: exported report using empty filename."); # Close log close $log;
Summary Report Export - No Row Results
# Filename: SummaryReportExport-NoRowResults.lava # Note: Macros created by this version of Vulcan, may not work as expected in # future versions. use utf8; use Macro; use Cwd; use Lava; use Gantt; use strict; SetActiveWindow("PRIMARY"); # Open log open(my $log, '>>', 'SummaryReport.log'); # Export my $dir = cwd(); my $file = "$dir/LavaReport-NoRowResults.csv"; Gantt::ExportCurrentReport("$file"); if (Gantt::HasError()) { # Error my $error = Gantt::GetGanttLastError(); print $log "Error: $error\n"; print $log "$file\n"; print $log "Failed to export LavaReport without row results.\n"; } else { print $log "Successfully exported report without row results.\n"; } # Close log close $log;
Setup Run Reserves
# Filename: SetupRunReserves.lava # Note: Macros created by this version of Vulcan, may not work as expected in # future versions. use utf8; use Macro; use Lava; use strict; use Gantt; SetActiveWindow("PRIMARY"); sub CheckResult { my($log, $hasErrorMessage, $message) = @_; if (Gantt::HasError()) { print $log "$hasErrorMessage\n"; } else { print $log "$message\n"; } } # Remove log file unlink("Reserves.log"); # Start log open(my $log, '>>', 'Reserves.log'); # Fail to setup reserve att Gantt::SetupReserveAtt("missing.res", "demoug.bmf", 1, 1); CheckResult($log, "Expected failure when setting up reserve att due to missing spec file.", "Error: setup reserves with missing spec file."); # Fail to setup reserve att Gantt::SetupReserveAtt("stope_tons.res", "missing.bmf", 1, 1); CheckResult($log, "Expected failure when setting up reserve att due to missing block model.", "Error: setup reserves with missing block model."); # Setup reserve att Gantt::SetupReserveAtt("stope_tons.res", "demoug.bmf", 1, 1); if (Gantt::HasError()) { # Error - Failed to setup reserve attributes correctly print $log "Failure when setting up reserve att due to missing block model.\n"; close $log; } elsif (Gantt::VerifyReservesSetup()) { # Note that reserves setup is valid print $log "Reserves setup is good. Running reserves.\n\n"; close $log; # Run reserves Gantt::RequestReserves(1); } else { # Error - Reserves setup is invalid open(my $log, '>>', 'Reserves.log'); print $log "Invalid reserves setup. Check SetupReservesAtt parameters.\n"; close $log; }
Spatial Precedences
# Filename: SpatialPrecedences.lava # Note: Macros created by this version of Vulcan, may not work as expected in # future versions. use utf8; use Macro; use Lava; use Gantt; use strict; SetActiveWindow("PRIMARY"); sub CheckResult { my($log, $hasErrorMessage, $message) = @_; if (Gantt::HasError()) { print $log "$hasErrorMessage\n"; } else { print $log "$message\n"; } } # Remove log file unlink("SpatialPrecedences.log"); # Open log open(my $log, '>>', 'SpatialPrecedences.log'); # Attempt to get results before running rules Gantt::GetSpatialPrecedenceRulesResult(); CheckResult($log, "Expected failure to retrieve results.", "Error: returned results when nothing was run."); # Add duplicate rule Gantt::AddSpatialPrecedenceRule("Lateral Development", "Lateral Development", 1, 0, 1, 0, "FS"); CheckResult($log, "Expected failure due add to duplicate name.", "Error: added rule with duplicate name."); # Add missing group Gantt::AddSpatialPrecedenceRule("LavaRule", "", 1, 0, 1, 0, "FS"); CheckResult($log, "Expected failure due add to missing group.", "Error: added rule without group."); # Add non-existant group Gantt::AddSpatialPrecedenceRule("LavaRule", "Garbage", 1, 0, 1, 0, "FS"); CheckResult($log, "Expected failure due add to non-existant group.", "Error: added rule with missing group."); # Add invalid precedence type Gantt::AddSpatialPrecedenceRule("LavaRule", "Lateral Development", 1, 0, 1, 0, "Garbage"); CheckResult($log, "Expected failure due add to invalid precedence type.", "Error: added rule with invalid precedence type."); # Add rule Gantt::AddSpatialPrecedenceRule("LavaRule", "DF Dev", 1, 0, 1, 0, "SS"); CheckResult($log, "Failed to add rule.", "Successfully added rule."); # Update rule Gantt::UpdateSpatialPrecedenceRule("LavaRule", "Lateral Development", 1, 50, 1, 0, "SS"); CheckResult($log, "Failed to update rule with new group.", "Successfully updated rule with new group."); # Update rule Gantt::UpdateSpatialPrecedenceRule("LavaRule", 1, 50, 1, 0, "FS"); CheckResult($log, "Failed to update rule with new precedence type.", "Successfully updated rule with new precedence type."); # Update distance lag Gantt::UpdateSpatialPrecedenceRuleDistanceLag("", 50); CheckResult($log, "Expected failure to set distance lag due to missing name.", "Error: updated rule without name."); # Update distance lag Gantt::UpdateSpatialPrecedenceRuleNoDistanceLag("LavaRule"); CheckResult($log, "Failed to update rule to not use distance lag.", "Successfully updated rule to not use distance lag."); # Update predecessor Gantt::UpdateSpatialPrecedenceRulePredecessor("", "", ""); CheckResult($log, "Expected failure to update predecessor filter or activity type due to missing name.", "Error: missing rule name but updated filter or activity type."); # Update successor filter Gantt::UpdateSpatialPrecedenceRuleSuccessorFilter("LavaRule", "Drift and Fill"); CheckResult($log, "Failed to update rule to not use successor filter.", "Successfully updated successor filter."); # Update successor Gantt::UpdateSpatialPrecedenceRuleSuccessor("LavaRule", "", "Drifting"); CheckResult($log, "Failed to update rule to remove successor filter and set activity type.", "Successfully updated successor filter and activity type."); # Update predecessor Gantt::UpdateSpatialPrecedenceRulePredecessorFilter("LavaRule", "Drifting"); CheckResult($log, "Failed to update rule to set predecessor activity type.", "Successfully updated predecessor filter for rule."); # Run rules error Gantt::RunSpatialPrecedenceRule("", ""); CheckResult($log, "Expected failure to run rule without name.", "Error: ran rule without name."); # Run rules print $log "\n"; my @rules = ("Development to Stope Prep", "DF Development", "Lateral Development", "Stope Prep to Stoping", "Stoping to Filling"); Gantt::RunSpatialPrecedenceRules(\@rules, "SpatialPrecedences.log"); if (Gantt::HasError()) { # Error print $log "Failed to run rules.\n\n"; } # Close log close $log;
Resources
# Filename: Resources.lava # Note: Macros created by this version of Vulcan, may not work as expected in # future versions. use utf8; use Macro; use Lava; use Gantt; use strict; SetActiveWindow("PRIMARY"); sub CheckResult { my($log, $hasErrorMessage, $message) = @_; if (Gantt::HasError()) { print $log "$hasErrorMessage\n"; } else { print $log "$message\n"; } } # Remove log file unlink("Resources.log"); # Open log open(my $log, '>>', 'Resources.log'); # Add Resource Gantt::AddResource("", "Default Calendar"); CheckResult($log, "Expected failure to add due to missing resource name.", "Error: added resource with no name."); # Add Resource Gantt::AddResource("Drifting", "Default Calendar"); CheckResult($log, "Expected failure to add due to existing resource with same name.", "Error: added resource with duplicate name."); # Add Resource Gantt::AddResource("LavaResource", "Garbage"); CheckResult($log, "Expected failure to add due to missing calendar.", "Error: added resource with missing calendar."); # Add Resource Gantt::AddResourceWithRateCapacity("LavaResource", "Default Calendar", -1, -1); CheckResult($log, "Expected failure to add due invalid rate/capacity.", "Error: added resource with invalid rate and capacity."); # Add Resource Gantt::AddResourceWithRateCapacity("LavaResource", "Maintenance", 10, 3); CheckResult($log, "Failed to add resource.", "Successfully added resource."); close $log; open(my $log, '>>', 'Resources.log'); # Set Resource Calendar Gantt::ResourceSetCalendar("Garbage", "Maintenance"); CheckResult($log, "Expected failure to update resource due to missing resource.", "Error: updated missing resource."); # Set Resource Calendar Gantt::ResourceSetCalendar("LavaResource", "Garbage"); CheckResult($log, "Expected failure to update resource due to missing calendar.", "Error: updated resource with missing calendar."); # Set Resource Calendar Gantt::ResourceSetCalendar("LavaResource", "Default Calendar"); CheckResult($log, "Failed to set calendar for resource.", "Successfully updated resource calendar."); close $log; open(my $log, '>>', 'Resources.log'); # Set Resource Expression Rate Gantt::ResourceSetRateExpression("LavaResource", "[Att:Junk]"); CheckResult($log, "Expected failure to update resource due to expression rate missing att.", "Error: set rate expression for resource with missing att."); # Set Resource Expression Rate Gantt::ResourceSetRateExpression("LavaResource", "[ATT:Volume] * 0.4"); CheckResult($log, "Failed to set expression rate for resource.", "Successfully set expression rate for resource."); # Set Resource Variable Rate by Activity Type Gantt::ResourceAddVariableRateItemActivityTypeRate("LavaResource", "Garbage"); CheckResult($log, "Expected failure to update resource due to missing activity type for variable rate.", "Error: added variable rate item for missing activity type."); # Set Resource Expression Rate Gantt::ResourceAddVariableRateItemActivityTypeRate("LavaResource", "Drifting"); CheckResult($log, "Failed to set variable rate for resource.", "Successfully added variable rate item for activity type."); # Set Resource Variable Rate by Activity Type Gantt::ResourceAddVariableRateItem("LavaResource", "Stoping", -1); CheckResult($log, "Expected failure to update resource variable rate due to invalid rate.", "Error: set invalid rate for activity type."); # Set Resource Variable Rate by Activity Type Gantt::ResourceAddVariableRateItem("LavaResource", "Stoping", 500); CheckResult($log, "Failed to set variable rate for resource.", "Successfully set variable rate for activity type."); # Remove Resource Variable Rate by Activity Type Gantt::ResourceRemoveVariableRateItem("LavaResource", "Garbage"); CheckResult($log, "Expected failure to update resource variable rate due to invalid rate.", "Error: removed variable rate item for missing activity type."); # Remove Resource Variable Rate by Activity Type Gantt::ResourceRemoveVariableRateItem("LavaResource", "Stoping"); CheckResult($log, "Failed to remove variable rate for resource.", "Successfully removed variable rate item for activity type."); # Set Resource Default Rate Gantt::ResourceSetDefaultRate("LavaResource", -1); CheckResult($log, "Expected failure to update resource due to invalid rate.", "Error: set invalid default rate for resource."); # Set Resource Default Rate and method Gantt::ResourceSetDefaultRateAndMethod("LavaResource", 100); CheckResult($log, "Failed to update rate and rate method for resource.", "Successfully set default rate and method."); close $log; open(my $log, '>>', 'Resources.log'); # Set Resource Variable Capacity Item Gantt::ResourceAddVariableCapacityItem("LavaResource", "Garbage", 50); CheckResult($log, "Expected failure to update resource variable capacity due to invalid date.", "Error: added variable capacity item without start date."); # Set Resource Variable Capacity Item Gantt::ResourceAddVariableCapacityItem("LavaResource", "1/1/2014", -5); CheckResult($log, "Expected failure to update resource variable capacity due to invalid capacity.", "Error: added variable capacity item with invalid capacity."); # Set Resource Variable Capacity Item Gantt::ResourceAddVariableCapacityItem("LavaResource", "2014/1/1", 50); CheckResult($log, "Failed to set variable capacity for resource.", "Successfully added variable capacity item."); # Remove Resource Variable Capacity Item Gantt::ResourceRemoveVariableCapacityItem("LavaResource", "Garbage"); CheckResult($log, "Expected failure to remove resource variable capacity item due to invalid date.", "Error: removed variable capacity item that didn't exist."); # Remove Resource Variable Capacity Item Gantt::ResourceRemoveVariableCapacityItem("LavaResource", "2014/1/1"); CheckResult($log, "Failed to remove variable capacity item for resource.", "Successfully removed variable capacity item."); # Set Resource Default Capacity Gantt::ResourceSetDefaultCapacity("LavaResource", -1); CheckResult($log, "Expected failure to update resource due to invalid rate.", "Error: set default capacity to invalid value."); # Set Resource Default capacity and method Gantt::ResourceSetDefaultCapacityAndMethod("LavaResource", 5); CheckResult($log, "Failed to update capacity and capacity method for resource.", "Successfully set default capacity and method."); close $log; open(my $log, '>>', 'Resources.log'); # Limit updating UI during allocation/removal of resources Gantt::SetPauseUserInterface(1); # Add resource to displayed activities Gantt::AddResourceToActivities("Garbage"); CheckResult($log, "Expected failure to add invalid resource to displayed activities.", "Error: added invalid resource to displayed activities."); # Remove resource to displayed activities - returns success with valid # resource but no allocations Gantt::RemoveResourceFromActivities("LavaResource"); CheckResult($log, "Failed to remove resource to displayed activities.", "Successfully removed resource allocations from activities without the resource."); # Add resource to displayed activities Gantt::AddResourceToActivities("LavaResource"); CheckResult($log, "Failed to add resource to displayed activities.", "Successfully added resource to displayed activities."); # Remove resource to displayed activities Gantt::RemoveResourceFromActivities("Garbage"); CheckResult($log, "Expected failure to remove invalid resource to displayed activities.", "Error: removed invalid resource from displayed activities."); # Remove resource to displayed activities Gantt::RemoveResourceFromActivities("LavaResource"); CheckResult($log, "Failed to remove resource to displayed activities.", "Successfully removed resource from displayed activities."); close $log; open(my $log, '>>', 'Resources.log'); # Add resource to activity Gantt::AddResourceToActivity("LavaResource", "Garbage", "P6610LH_SL100_01O"); CheckResult($log, "Expected failure to add resource to activity due to invalid activity type.", "Error: added resource to activity with invalid activity type."); # Add resource to activity Gantt::AddResourceToActivityById("LavaResource", -1); CheckResult($log, "Expected failure to add resource to activity due to invalid Id.", "Error: removed resource from activity with invalid Id."); # Add resource to activity Gantt::AddResourceToActivity("LavaResource", "Stope Prep", "Garbage"); CheckResult($log, "Expected failure to add resource to activity due to invalid activity name.", "Error: added resource to activity with invalid name."); # Remove resource to activity Gantt::RemoveResourceFromActivity("LavaResource", "Stope Prep", "P6610LH_SL100_01O"); CheckResult($log, "Expected failure to remove resource that wasn't allocated.", "Error: removed resource from activity without allocation."); # Add resource to activity Gantt::AddResourceToActivity("LavaResource", "Stope Prep", "P6610LH_SL100_01O"); CheckResult($log, "Failed to add resource to activity.", "Successfully added resource to activity."); # Remove resource to activity Gantt::RemoveResourceFromActivity("LavaResource", "Stope Prep", "P6610LH_SL100_01O"); CheckResult($log, "Failed to remove resource to activity.", "Successfully removed resource from activity."); # Close log close $log; Gantt::Close(0);
Leveling
# Filename: Leveling.lava # Note: Macros created by this version of Vulcan, may not work as expected in # future versions. use Macro; use Lava; use Gantt; SetActiveWindow("PRIMARY"); sub CheckResult { my($log, $hasErrorMessage, $message) = @_; if (Gantt::HasError()) { print $log "$hasErrorMessage\n"; } else { print $log "$message\n"; } } # Remove log file unlink("Leveling.log"); # Start log open(my $log, '>>', 'Leveling.log'); # Fail to update leveling Gantt::UpdateLevelingSetup("garbage", "garbage", 1, 0, 12); CheckResult($log, "Expected failure when updating leveling setup due to invalid dates.", "Error: updated to leveling setup with invalid dates."); Gantt::UpdateLevelingSetup("", "", 1, 0, -1); CheckResult($log, "Expected failure when updating leveling setup due to invalid split value.", "Error: updated to leveling setup with invalid split value."); # Update leveling setup Gantt::UpdateLevelingSetup("", "", 1, 0, 12); if (Gantt::HasError()) { # Error - shouldn't fail print $log "Failure when updating leveling setup!\n"; close $log; } else { # Note successfully updated leveling setup print $log "Successfully updated leveling setup.\n\n"; close $log; # run leveling Gantt::RunLeveling("Leveling.log"); }