Test.cs:
using System;
using Xunit;
using Google.OrTools.ConstraintSolver;
using static Google.OrTools.ConstraintSolver.operations_research_constraint_solver;
namespace Google.OrTools.Tests {
public class Tmp {
[Theory][InlineData(false)][InlineData(true)]
public void IntVectorToInt64Vector(bool callGC) {
Console.WriteLine("GC enabled: {0}", callGC);
Console.WriteLine("initialization...");
int[] input = new int[100000];
for(int i=0; i < input.Length; ++i) {
input[i] = 2*i;
}
Console.WriteLine("initialization...DONE");
for(int i=0; i < 1000000; ++i) {
long[] output = ToInt64Vector(input);
Assert.Equal(input.Length, output.Length);
Assert.Equal(0, output[0]);
Assert.Equal(2, output[1]);
Assert.Equal(2*(input.Length-1), output[input.Length-1]);
if (callGC) {
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
}
[Theory][InlineData(false)][InlineData(true)]
public void Sequence(bool callGC) {
Console.WriteLine("GC enabled: {0}", callGC);
Console.WriteLine("initialization...");
Solver solver = new Solver("Solver");
Assignment ass = solver.MakeAssignment();
IntervalVar[] intervals =
solver.MakeFixedDurationIntervalVarArray(10, 0, 10, 5, false, "task");
DisjunctiveConstraint disjunctive = intervals.Disjunctive("Sequence");
SequenceVar var = disjunctive.SequenceVar();
ass.Add(var);
Console.WriteLine("initialization...DONE");
for(int i=0; i < 1000000; ++i) {
ass.SetForwardSequence(var, new int[] { 1, 3, 5 });
int[] seq = ass.ForwardSequence(var);
Assert.Equal(3, seq.Length);
Assert.Equal(1, seq[0]);
Assert.Equal(3, seq[1]);
Assert.Equal(5, seq[2]);
if (callGC) {
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
GC.KeepAlive(solver);
}
}
} // namespace Google.OrTools.Tests
then
```
make run_test SOURCE=tmp.cs &
htop
```
<summary> Various utilities to be used by libraries </summary> This directory contains various utilities needed by the operations research libraries. - const_int_array.h : A read-only container of integer values. - const_ptr_array.h : A read-only container of pointers.