OSDN Git Service

- Less verbose but more precise error reporting implemented.
authorcs <cs@e1914e07-63f8-0310-9059-d6d858d7cdca>
Mon, 25 Nov 2002 00:07:45 +0000 (00:07 +0000)
committercs <cs@e1914e07-63f8-0310-9059-d6d858d7cdca>
Mon, 25 Nov 2002 00:07:45 +0000 (00:07 +0000)
- 'include' attribute within tasks is deprecated now.
- More test cases added to test suite.

git-svn-id: https://www.taskjuggler.org/svn/taskjuggler/trunk@353 e1914e07-63f8-0310-9059-d6d858d7cdca

13 files changed:
TestSuite/Scheduler/Correct/TaskMix-Reference.tjsp [new file with mode: 0644]
TestSuite/Scheduler/Correct/TaskMix3-Reference.tjsp [new file with mode: 0644]
TestSuite/Scheduler/Correct/TaskMix3.tjp [new file with mode: 0644]
TestSuite/Scheduler/Correct/TaskTree-Reference.tjsp [new file with mode: 0644]
TestSuite/Scheduler/Correct/TaskTree.tjp [new file with mode: 0644]
TestSuite/Scheduler/Errors/Runaway1.tjp [new file with mode: 0644]
TestSuite/Scheduler/Errors/Runaway2.tjp [new file with mode: 0644]
TestSuite/Scheduler/Errors/Runaway3.tjp [new file with mode: 0644]
docs/en/taskjuggler.sgml.in
taskjuggler/Project.cpp
taskjuggler/ProjectFile.cpp
taskjuggler/Task.cpp
taskjuggler/Task.h

diff --git a/TestSuite/Scheduler/Correct/TaskMix-Reference.tjsp b/TestSuite/Scheduler/Correct/TaskMix-Reference.tjsp
new file mode 100644 (file)
index 0000000..2ddb4c0
--- /dev/null
@@ -0,0 +1,344 @@
+task t7 "|->M1" {
+  start 2003-01-06-00:00:00-+0000
+  end 2003-01-10-17:59:59-+0000
+  projectid simple
+}
+task t1 "|->" {
+  start 2003-01-06-00:00:00-+0000
+  end 2003-01-10-23:59:59-+0000
+  projectid simple
+}
+task t12 "|<-|M2" {
+  start 2003-01-06-00:00:00-+0000
+  end 2003-01-17-17:59:59-+0000
+  projectid simple
+}
+task t10 "|<-|" {
+  start 2003-01-06-00:00:00-+0000
+  end 2003-01-24-17:59:59-+0000
+  projectid simple
+}
+task t9 "|->|" {
+  start 2003-01-06-09:00:00-+0000
+  end 2003-01-27-00:00:00-+0000
+  projectid simple
+}
+task m1 "Milestone1" {
+  start 2003-01-11-00:00:00-+0000
+  end 2003-01-11-00:00:00-+0000
+  projectid simple
+  milestone 
+  depends t1, t7
+}
+task t6 "M1<-M2" {
+  start 2003-01-11-00:00:00-+0000
+  end 2003-01-17-17:59:59-+0000
+  projectid simple
+  depends m1
+}
+task t3 "M1->" {
+  start 2003-01-13-09:00:00-+0000
+  end 2003-01-17-17:59:59-+0000
+  projectid simple
+  depends m1
+}
+task t4 "<-M2" {
+  start 2003-01-13-09:00:00-+0000
+  end 2003-01-17-17:59:59-+0000
+  projectid simple
+}
+task t5 "M1->M2" {
+  start 2003-01-13-09:00:00-+0000
+  end 2003-01-19-23:59:58-+0000
+  projectid simple
+  depends m1
+}
+task t11 "M1|->|" {
+  start 2003-01-13-09:00:00-+0000
+  end 2003-01-27-00:00:00-+0000
+  projectid simple
+  depends m1
+}
+task m2 "Milestone2" {
+  start 2003-01-19-23:59:59-+0000
+  end 2003-01-19-23:59:59-+0000
+  projectid simple
+  milestone 
+  depends t4, t5, t6, t12
+}
+task t2 "<-|" {
+  start 2003-01-20-00:00:00-+0000
+  end 2003-01-27-00:00:00-+0000
+  projectid simple
+  depends m2
+}
+task t8 "M2<-|" {
+  start 2003-01-20-09:00:00-+0000
+  end 2003-01-27-00:00:00-+0000
+  projectid simple
+  depends m2
+}
+supplement task t7 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task t1 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task t12 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task t10 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task t9 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task m1 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task t6 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task t3 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task t4 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task t5 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task t11 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task m2 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task t2 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task t8 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement resource tux1 {
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 t3
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 t3
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 t3
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 t3
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 t3
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 t3
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 t3
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 t3
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 t3
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 t3
+}
+supplement resource tux10 {
+  planbooking 2003-01-06-09:00:00-+0000 2003-01-06-11:59:59-+0000 t12
+  planbooking 2003-01-06-13:00:00-+0000 2003-01-06-17:59:59-+0000 t12
+  planbooking 2003-01-07-09:00:00-+0000 2003-01-07-11:59:59-+0000 t12
+  planbooking 2003-01-07-13:00:00-+0000 2003-01-07-17:59:59-+0000 t12
+  planbooking 2003-01-08-09:00:00-+0000 2003-01-08-11:59:59-+0000 t12
+  planbooking 2003-01-08-13:00:00-+0000 2003-01-08-17:59:59-+0000 t12
+  planbooking 2003-01-09-09:00:00-+0000 2003-01-09-11:59:59-+0000 t12
+  planbooking 2003-01-09-13:00:00-+0000 2003-01-09-17:59:59-+0000 t12
+  planbooking 2003-01-10-09:00:00-+0000 2003-01-10-11:59:59-+0000 t12
+  planbooking 2003-01-10-13:00:00-+0000 2003-01-10-17:59:59-+0000 t12
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 t12
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 t12
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 t12
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 t12
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 t12
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 t12
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 t12
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 t12
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 t12
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 t12
+}
+supplement resource tux2 {
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 t4
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 t4
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 t4
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 t4
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 t4
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 t4
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 t4
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 t4
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 t4
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 t4
+}
+supplement resource tux3 {
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 t5
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 t5
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 t5
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 t5
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 t5
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 t5
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 t5
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 t5
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 t5
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 t5
+}
+supplement resource tux4 {
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 t6
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 t6
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 t6
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 t6
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 t6
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 t6
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 t6
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 t6
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 t6
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 t6
+}
+supplement resource tux5 {
+  planbooking 2003-01-06-09:00:00-+0000 2003-01-06-11:59:59-+0000 t7
+  planbooking 2003-01-06-13:00:00-+0000 2003-01-06-17:59:59-+0000 t7
+  planbooking 2003-01-07-09:00:00-+0000 2003-01-07-11:59:59-+0000 t7
+  planbooking 2003-01-07-13:00:00-+0000 2003-01-07-17:59:59-+0000 t7
+  planbooking 2003-01-08-09:00:00-+0000 2003-01-08-11:59:59-+0000 t7
+  planbooking 2003-01-08-13:00:00-+0000 2003-01-08-17:59:59-+0000 t7
+  planbooking 2003-01-09-09:00:00-+0000 2003-01-09-11:59:59-+0000 t7
+  planbooking 2003-01-09-13:00:00-+0000 2003-01-09-17:59:59-+0000 t7
+  planbooking 2003-01-10-09:00:00-+0000 2003-01-10-11:59:59-+0000 t7
+  planbooking 2003-01-10-13:00:00-+0000 2003-01-10-17:59:59-+0000 t7
+}
+supplement resource tux6 {
+  planbooking 2003-01-20-09:00:00-+0000 2003-01-20-11:59:59-+0000 t8
+  planbooking 2003-01-20-13:00:00-+0000 2003-01-20-17:59:59-+0000 t8
+  planbooking 2003-01-21-09:00:00-+0000 2003-01-21-11:59:59-+0000 t8
+  planbooking 2003-01-21-13:00:00-+0000 2003-01-21-17:59:59-+0000 t8
+  planbooking 2003-01-22-09:00:00-+0000 2003-01-22-11:59:59-+0000 t8
+  planbooking 2003-01-22-13:00:00-+0000 2003-01-22-17:59:59-+0000 t8
+  planbooking 2003-01-23-09:00:00-+0000 2003-01-23-11:59:59-+0000 t8
+  planbooking 2003-01-23-13:00:00-+0000 2003-01-23-17:59:59-+0000 t8
+  planbooking 2003-01-24-09:00:00-+0000 2003-01-24-11:59:59-+0000 t8
+  planbooking 2003-01-24-13:00:00-+0000 2003-01-24-17:59:59-+0000 t8
+}
+supplement resource tux7 {
+  planbooking 2003-01-06-09:00:00-+0000 2003-01-06-11:59:59-+0000 t9
+  planbooking 2003-01-06-13:00:00-+0000 2003-01-06-17:59:59-+0000 t9
+  planbooking 2003-01-07-09:00:00-+0000 2003-01-07-11:59:59-+0000 t9
+  planbooking 2003-01-07-13:00:00-+0000 2003-01-07-17:59:59-+0000 t9
+  planbooking 2003-01-08-09:00:00-+0000 2003-01-08-11:59:59-+0000 t9
+  planbooking 2003-01-08-13:00:00-+0000 2003-01-08-17:59:59-+0000 t9
+  planbooking 2003-01-09-09:00:00-+0000 2003-01-09-11:59:59-+0000 t9
+  planbooking 2003-01-09-13:00:00-+0000 2003-01-09-17:59:59-+0000 t9
+  planbooking 2003-01-10-09:00:00-+0000 2003-01-10-11:59:59-+0000 t9
+  planbooking 2003-01-10-13:00:00-+0000 2003-01-10-17:59:59-+0000 t9
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 t9
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 t9
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 t9
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 t9
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 t9
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 t9
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 t9
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 t9
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 t9
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 t9
+  planbooking 2003-01-20-09:00:00-+0000 2003-01-20-11:59:59-+0000 t9
+  planbooking 2003-01-20-13:00:00-+0000 2003-01-20-17:59:59-+0000 t9
+  planbooking 2003-01-21-09:00:00-+0000 2003-01-21-11:59:59-+0000 t9
+  planbooking 2003-01-21-13:00:00-+0000 2003-01-21-17:59:59-+0000 t9
+  planbooking 2003-01-22-09:00:00-+0000 2003-01-22-11:59:59-+0000 t9
+  planbooking 2003-01-22-13:00:00-+0000 2003-01-22-17:59:59-+0000 t9
+  planbooking 2003-01-23-09:00:00-+0000 2003-01-23-11:59:59-+0000 t9
+  planbooking 2003-01-23-13:00:00-+0000 2003-01-23-17:59:59-+0000 t9
+  planbooking 2003-01-24-09:00:00-+0000 2003-01-24-11:59:59-+0000 t9
+  planbooking 2003-01-24-13:00:00-+0000 2003-01-24-17:59:59-+0000 t9
+}
+supplement resource tux8 {
+  planbooking 2003-01-06-09:00:00-+0000 2003-01-06-11:59:59-+0000 t10
+  planbooking 2003-01-06-13:00:00-+0000 2003-01-06-17:59:59-+0000 t10
+  planbooking 2003-01-07-09:00:00-+0000 2003-01-07-11:59:59-+0000 t10
+  planbooking 2003-01-07-13:00:00-+0000 2003-01-07-17:59:59-+0000 t10
+  planbooking 2003-01-08-09:00:00-+0000 2003-01-08-11:59:59-+0000 t10
+  planbooking 2003-01-08-13:00:00-+0000 2003-01-08-17:59:59-+0000 t10
+  planbooking 2003-01-09-09:00:00-+0000 2003-01-09-11:59:59-+0000 t10
+  planbooking 2003-01-09-13:00:00-+0000 2003-01-09-17:59:59-+0000 t10
+  planbooking 2003-01-10-09:00:00-+0000 2003-01-10-11:59:59-+0000 t10
+  planbooking 2003-01-10-13:00:00-+0000 2003-01-10-17:59:59-+0000 t10
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 t10
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 t10
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 t10
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 t10
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 t10
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 t10
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 t10
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 t10
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 t10
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 t10
+  planbooking 2003-01-20-09:00:00-+0000 2003-01-20-11:59:59-+0000 t10
+  planbooking 2003-01-20-13:00:00-+0000 2003-01-20-17:59:59-+0000 t10
+  planbooking 2003-01-21-09:00:00-+0000 2003-01-21-11:59:59-+0000 t10
+  planbooking 2003-01-21-13:00:00-+0000 2003-01-21-17:59:59-+0000 t10
+  planbooking 2003-01-22-09:00:00-+0000 2003-01-22-11:59:59-+0000 t10
+  planbooking 2003-01-22-13:00:00-+0000 2003-01-22-17:59:59-+0000 t10
+  planbooking 2003-01-23-09:00:00-+0000 2003-01-23-11:59:59-+0000 t10
+  planbooking 2003-01-23-13:00:00-+0000 2003-01-23-17:59:59-+0000 t10
+  planbooking 2003-01-24-09:00:00-+0000 2003-01-24-11:59:59-+0000 t10
+  planbooking 2003-01-24-13:00:00-+0000 2003-01-24-17:59:59-+0000 t10
+}
+supplement resource tux9 {
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 t11
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 t11
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 t11
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 t11
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 t11
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 t11
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 t11
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 t11
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 t11
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 t11
+  planbooking 2003-01-20-09:00:00-+0000 2003-01-20-11:59:59-+0000 t11
+  planbooking 2003-01-20-13:00:00-+0000 2003-01-20-17:59:59-+0000 t11
+  planbooking 2003-01-21-09:00:00-+0000 2003-01-21-11:59:59-+0000 t11
+  planbooking 2003-01-21-13:00:00-+0000 2003-01-21-17:59:59-+0000 t11
+  planbooking 2003-01-22-09:00:00-+0000 2003-01-22-11:59:59-+0000 t11
+  planbooking 2003-01-22-13:00:00-+0000 2003-01-22-17:59:59-+0000 t11
+  planbooking 2003-01-23-09:00:00-+0000 2003-01-23-11:59:59-+0000 t11
+  planbooking 2003-01-23-13:00:00-+0000 2003-01-23-17:59:59-+0000 t11
+  planbooking 2003-01-24-09:00:00-+0000 2003-01-24-11:59:59-+0000 t11
+  planbooking 2003-01-24-13:00:00-+0000 2003-01-24-17:59:59-+0000 t11
+}
diff --git a/TestSuite/Scheduler/Correct/TaskMix3-Reference.tjsp b/TestSuite/Scheduler/Correct/TaskMix3-Reference.tjsp
new file mode 100644 (file)
index 0000000..ceb23a6
--- /dev/null
@@ -0,0 +1,507 @@
+task container3 "Container3" {
+  start 2003-01-11-00:00:00-+0000
+  end 2003-01-18-00:00:00-+0000
+  projectid prj
+}
+task container3.c21 "-D --> |" {
+  start 2003-01-11-00:00:00-+0000
+  end 2003-01-18-00:00:00-+0000
+  projectid prj
+}
+task container3.c28 "-D <-- |" {
+  start 2003-01-11-00:00:00-+0000
+  end 2003-01-18-00:00:00-+0000
+  projectid prj
+}
+task container3.c11 "|D --> |" {
+  start 2003-01-13-00:00:00-+0000
+  end 2003-01-18-00:00:00-+0000
+  projectid prj
+}
+task container3.c14 "|D <-- |" {
+  start 2003-01-13-00:00:00-+0000
+  end 2003-01-18-00:00:00-+0000
+  projectid prj
+}
+task container3.c9 "|D x-> -" {
+  start 2003-01-13-09:00:00-+0000
+  end 2003-01-17-17:59:59-+0000
+  projectid prj
+}
+task container3.c19 "-D x-> -" {
+  start 2003-01-13-09:00:00-+0000
+  end 2003-01-17-17:59:59-+0000
+  projectid prj
+}
+task container3.c24 "-D <-x |" {
+  start 2003-01-13-09:00:00-+0000
+  end 2003-01-17-17:59:59-+0000
+  projectid prj
+}
+task container4 "Container4" {
+  start 2003-01-11-00:00:00-+0000
+  end 2003-01-19-23:59:00-+0000
+  projectid prj
+}
+task container4.c23 "-D --> |D" {
+  start 2003-01-11-00:00:00-+0000
+  end 2003-01-18-00:00:00-+0000
+  projectid prj
+}
+task container4.c30 "-D <-- |D" {
+  start 2003-01-11-00:00:00-+0000
+  end 2003-01-18-00:00:00-+0000
+  projectid prj
+}
+task container4.c22 "-D --> -D" {
+  start 2003-01-11-00:00:00-+0000
+  end 2003-01-19-23:59:00-+0000
+  projectid prj
+}
+task container4.c29 "-D <-- -D" {
+  start 2003-01-11-00:00:00-+0000
+  end 2003-01-19-23:59:00-+0000
+  projectid prj
+}
+task container4.c13 "|D --> |D" {
+  start 2003-01-13-00:00:00-+0000
+  end 2003-01-18-00:00:00-+0000
+  projectid prj
+}
+task container4.c15 "|D <-- -D" {
+  start 2003-01-13-00:00:00-+0000
+  end 2003-01-18-00:00:00-+0000
+  projectid prj
+}
+task container4.c12 "|D --> -D" {
+  start 2003-01-13-00:00:00-+0000
+  end 2003-01-19-23:59:00-+0000
+  projectid prj
+}
+task container4.c10 "|D x-> -D" {
+  start 2003-01-13-09:00:00-+0000
+  end 2003-01-17-17:59:59-+0000
+  projectid prj
+}
+task container4.c20 "-D x-> -D" {
+  start 2003-01-13-09:00:00-+0000
+  end 2003-01-17-17:59:59-+0000
+  projectid prj
+}
+task container4.c25 "-D <-x -D" {
+  start 2003-01-13-09:00:00-+0000
+  end 2003-01-17-17:59:59-+0000
+  projectid prj
+}
+task container4.c26 "-D <-x |D" {
+  start 2003-01-13-09:00:00-+0000
+  end 2003-01-17-17:59:59-+0000
+  projectid prj
+}
+task container1 "Container1" {
+  start 2003-01-13-00:00:00-+0000
+  end 2003-01-18-00:00:00-+0000
+  projectid prj
+}
+task container1.c3 "| --> |" {
+  start 2003-01-13-00:00:00-+0000
+  end 2003-01-18-00:00:00-+0000
+  projectid prj
+}
+task container1.c6 "| <-- |" {
+  start 2003-01-13-00:00:00-+0000
+  end 2003-01-18-00:00:00-+0000
+  projectid prj
+}
+task container1.c1 "| x-> -" {
+  start 2003-01-13-09:00:00-+0000
+  end 2003-01-17-17:59:59-+0000
+  projectid prj
+}
+task container1.c16 "- <-x |" {
+  start 2003-01-13-09:00:00-+0000
+  end 2003-01-17-17:59:59-+0000
+  projectid prj
+}
+task container2 "Container2" {
+  start 2003-01-13-00:00:00-+0000
+  end 2003-01-19-23:59:00-+0000
+  projectid prj
+}
+task container2.c5 "| --> |D" {
+  start 2003-01-13-00:00:00-+0000
+  end 2003-01-18-00:00:00-+0000
+  projectid prj
+}
+task container2.c8 "| <-- |D" {
+  start 2003-01-13-00:00:00-+0000
+  end 2003-01-18-00:00:00-+0000
+  projectid prj
+}
+task container2.c4 "| --> -D" {
+  start 2003-01-13-00:00:00-+0000
+  end 2003-01-19-23:59:00-+0000
+  projectid prj
+}
+task container2.c7 "| <-- -D" {
+  start 2003-01-13-00:00:00-+0000
+  end 2003-01-19-23:59:00-+0000
+  projectid prj
+}
+task container2.c2 "| x-> -D" {
+  start 2003-01-13-09:00:00-+0000
+  end 2003-01-17-17:59:59-+0000
+  projectid prj
+}
+task container2.c17 "- <-x -D" {
+  start 2003-01-13-09:00:00-+0000
+  end 2003-01-17-17:59:59-+0000
+  projectid prj
+}
+task container2.c18 "- <-x |D" {
+  start 2003-01-13-09:00:00-+0000
+  end 2003-01-17-17:59:59-+0000
+  projectid prj
+}
+supplement task container3 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container3.c21 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container3.c28 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container3.c11 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container3.c14 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container3.c9 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container3.c19 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container3.c24 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container4 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container4.c23 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container4.c30 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container4.c22 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container4.c29 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container4.c13 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container4.c15 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container4.c12 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container4.c10 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container4.c20 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container4.c25 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container4.c26 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container1 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container1.c3 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container1.c6 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container1.c1 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container1.c16 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container2 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container2.c5 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container2.c8 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container2.c4 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container2.c7 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container2.c2 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container2.c17 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement task container2.c18 {
+  minstart 2003-01-01-00:00:00-+0000
+  maxstart 2003-01-31-00:00:00-+0000
+  minend 2003-01-01-00:00:00-+0000
+  maxend 2003-01-31-00:00:00-+0000
+}
+supplement resource tux1 {
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 container1.c1
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 container1.c1
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 container1.c1
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 container1.c1
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 container1.c1
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 container1.c1
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 container1.c1
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 container1.c1
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 container1.c1
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 container1.c1
+}
+supplement resource tux10 {
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 container3.c24
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 container3.c24
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 container3.c24
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 container3.c24
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 container3.c24
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 container3.c24
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 container3.c24
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 container3.c24
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 container3.c24
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 container3.c24
+}
+supplement resource tux11 {
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 container4.c25
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 container4.c25
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 container4.c25
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 container4.c25
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 container4.c25
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 container4.c25
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 container4.c25
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 container4.c25
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 container4.c25
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 container4.c25
+}
+supplement resource tux12 {
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 container4.c26
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 container4.c26
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 container4.c26
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 container4.c26
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 container4.c26
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 container4.c26
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 container4.c26
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 container4.c26
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 container4.c26
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 container4.c26
+}
+supplement resource tux2 {
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 container2.c2
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 container2.c2
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 container2.c2
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 container2.c2
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 container2.c2
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 container2.c2
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 container2.c2
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 container2.c2
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 container2.c2
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 container2.c2
+}
+supplement resource tux3 {
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 container3.c9
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 container3.c9
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 container3.c9
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 container3.c9
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 container3.c9
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 container3.c9
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 container3.c9
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 container3.c9
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 container3.c9
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 container3.c9
+}
+supplement resource tux4 {
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 container4.c10
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 container4.c10
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 container4.c10
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 container4.c10
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 container4.c10
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 container4.c10
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 container4.c10
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 container4.c10
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 container4.c10
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 container4.c10
+}
+supplement resource tux5 {
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 container1.c16
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 container1.c16
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 container1.c16
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 container1.c16
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 container1.c16
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 container1.c16
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 container1.c16
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 container1.c16
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 container1.c16
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 container1.c16
+}
+supplement resource tux6 {
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 container2.c17
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 container2.c17
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 container2.c17
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 container2.c17
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 container2.c17
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 container2.c17
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 container2.c17
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 container2.c17
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 container2.c17
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 container2.c17
+}
+supplement resource tux7 {
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 container2.c18
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 container2.c18
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 container2.c18
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 container2.c18
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 container2.c18
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 container2.c18
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 container2.c18
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 container2.c18
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 container2.c18
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 container2.c18
+}
+supplement resource tux8 {
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 container3.c19
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 container3.c19
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 container3.c19
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 container3.c19
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 container3.c19
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 container3.c19
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 container3.c19
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 container3.c19
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 container3.c19
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 container3.c19
+}
+supplement resource tux9 {
+  planbooking 2003-01-13-09:00:00-+0000 2003-01-13-11:59:59-+0000 container4.c20
+  planbooking 2003-01-13-13:00:00-+0000 2003-01-13-17:59:59-+0000 container4.c20
+  planbooking 2003-01-14-09:00:00-+0000 2003-01-14-11:59:59-+0000 container4.c20
+  planbooking 2003-01-14-13:00:00-+0000 2003-01-14-17:59:59-+0000 container4.c20
+  planbooking 2003-01-15-09:00:00-+0000 2003-01-15-11:59:59-+0000 container4.c20
+  planbooking 2003-01-15-13:00:00-+0000 2003-01-15-17:59:59-+0000 container4.c20
+  planbooking 2003-01-16-09:00:00-+0000 2003-01-16-11:59:59-+0000 container4.c20
+  planbooking 2003-01-16-13:00:00-+0000 2003-01-16-17:59:59-+0000 container4.c20
+  planbooking 2003-01-17-09:00:00-+0000 2003-01-17-11:59:59-+0000 container4.c20
+  planbooking 2003-01-17-13:00:00-+0000 2003-01-17-17:59:59-+0000 container4.c20
+}
diff --git a/TestSuite/Scheduler/Correct/TaskMix3.tjp b/TestSuite/Scheduler/Correct/TaskMix3.tjp
new file mode 100644 (file)
index 0000000..8b999d3
--- /dev/null
@@ -0,0 +1,209 @@
+project prj "TaskMix2 Project" "$Id" 2003-01-01-0:00-GMT 2003-01-31-0:00-GMT {
+       timezone "GMT"
+}
+
+resource tux1 "Tux1"
+resource tux2 "Tux2"
+resource tux3 "Tux3"
+resource tux4 "Tux4"
+resource tux5 "Tux5"
+resource tux6 "Tux6"
+resource tux7 "Tux7"
+resource tux8 "Tux8"
+resource tux9 "Tux9"
+resource tux10 "Tux10"
+resource tux11 "Tux11"
+resource tux12 "Tux12"
+
+task container1 "Container1" {
+       task c1 "| x-> -" {
+               start 2003-01-13
+               effort 5d
+               allocate tux1
+       }
+       
+       task c3 "| --> |" {
+               start 2003-01-13
+               end 2003-01-18
+       }
+
+       task c6 "| <-- |" {
+               start 2003-01-13
+               end 2003-01-18
+               scheduling alap
+       }
+
+       task c16 "- <-x |" {
+               end 2003-01-18
+               effort 5d
+               allocate tux5
+               scheduling alap
+       }
+}
+
+task container2 "Container2" {
+       end 2003-01-19-23:59
+       
+       task c2 "| x-> -D" {
+               start 2003-01-13
+               effort 5d
+               allocate tux2
+               scheduling asap
+       }
+
+       task c4 "| --> -D" {
+               start 2003-01-13
+               scheduling asap
+       }
+
+       task c5 "| --> |D" {
+               start 2003-01-13
+               end 2003-01-18
+               scheduling asap
+       }
+
+       task c7 "| <-- -D" {
+               start 2003-01-13
+               scheduling alap
+       }
+
+       task c8 "| <-- |D" {
+               start 2003-01-13
+               end 2003-01-18
+               scheduling alap
+       }
+
+       task c17 "- <-x -D" {
+               effort 5d
+               allocate tux6
+               scheduling alap
+       }
+
+       task c18 "- <-x |D" {
+               end 2003-01-18
+               effort 5d
+               allocate tux7
+               scheduling alap
+       }
+}
+
+task container3 "Container3" {
+       start 2003-01-11
+
+       task c9 "|D x-> -" {
+               start 2003-01-13
+               effort 5d
+               allocate tux3
+       }
+
+       task c11 "|D --> |" {
+               start 2003-01-13
+               end 2003-01-18
+               scheduling asap
+       }
+
+       task c14 "|D <-- |" {
+               start 2003-01-13
+               end 2003-01-18
+               scheduling alap
+       }
+
+       task c19 "-D x-> -" {
+               effort 5d
+               allocate tux8
+       }
+
+       task c21 "-D --> |" {
+               end 2003-01-18
+       }
+
+       task c24 "-D <-x |" {
+               effort 5d
+               allocate tux10
+               end 2003-01-18
+               scheduling alap
+       }
+
+       task c28 "-D <-- |" {
+               end 2003-01-18
+               scheduling alap
+       }
+}
+
+task container4 "Container4" {
+       start 2003-01-11
+       end 2003-01-19-23:59
+       
+       task c10 "|D x-> -D" {
+               start 2003-01-13
+               scheduling asap
+               effort 5d
+               allocate tux4
+       }
+
+       task c12 "|D --> -D" {
+               start 2003-01-13
+               scheduling asap
+       }
+
+       task c13 "|D --> |D" {
+               start 2003-01-13
+               end 2003-01-18
+               scheduling asap
+       }
+
+       task c15 "|D <-- -D" {
+               start 2003-01-13
+               end 2003-01-18
+               scheduling alap
+       }
+
+       task c20 "-D x-> -D" {
+               effort 5d
+               allocate tux9
+               scheduling asap
+       }
+
+       task c22 "-D --> -D" {
+               scheduling asap
+       }
+
+       task c23 "-D --> |D" {
+               end 2003-01-18
+               scheduling asap
+       }
+
+       task c25 "-D <-x -D" {
+               effort 5d
+               allocate tux11
+               scheduling alap
+       }
+
+       task c26 "-D <-x |D" {
+               effort 5d
+               allocate tux12
+               end 2003-01-18
+               scheduling alap
+       }
+
+       task c29 "-D <-- -D" {
+               scheduling alap
+       }
+
+       task c30 "-D <-- |D" {
+               end 2003-01-18
+               scheduling alap
+       }
+}
+
+htmltaskreport "TaskMix3.html" {
+       columns id, name, start, end, daily
+}
+
+export "TaskMix3-Export.tjsp" {
+       hidetask 0
+       hideresource 0
+       taskattributes flags, note, minstart, maxstart, minend, maxend,
+       complete, responsible, depends
+}
+
diff --git a/TestSuite/Scheduler/Correct/TaskTree-Reference.tjsp b/TestSuite/Scheduler/Correct/TaskTree-Reference.tjsp
new file mode 100644 (file)
index 0000000..7dd1929
--- /dev/null
@@ -0,0 +1,47 @@
+task t1 "Task1" {
+  start 2000-01-01-00:00:00-+0000
+  end 2000-01-14-23:59:59-+0000
+  projectid simple
+}
+task t2 "Task2" {
+  start 2000-01-10-00:00:00-+0000
+  end 2000-01-14-23:59:59-+0000
+  projectid simple
+}
+task m1 "Milestone1" {
+  start 2000-01-15-00:00:00-+0000
+  end 2000-01-15-00:00:00-+0000
+  projectid simple
+  milestone 
+  depends t1, t2
+}
+task t3 "Task3" {
+  start 2000-01-15-00:00:00-+0000
+  end 2000-01-21-23:59:59-+0000
+  projectid simple
+  depends m1
+}
+supplement task t1 {
+  minstart 2000-01-01-00:00:00-+0000
+  maxstart 2000-01-31-00:00:00-+0000
+  minend 2000-01-01-00:00:00-+0000
+  maxend 2000-01-31-00:00:00-+0000
+}
+supplement task t2 {
+  minstart 2000-01-01-00:00:00-+0000
+  maxstart 2000-01-31-00:00:00-+0000
+  minend 2000-01-01-00:00:00-+0000
+  maxend 2000-01-31-00:00:00-+0000
+}
+supplement task m1 {
+  minstart 2000-01-01-00:00:00-+0000
+  maxstart 2000-01-31-00:00:00-+0000
+  minend 2000-01-01-00:00:00-+0000
+  maxend 2000-01-31-00:00:00-+0000
+}
+supplement task t3 {
+  minstart 2000-01-01-00:00:00-+0000
+  maxstart 2000-01-31-00:00:00-+0000
+  minend 2000-01-01-00:00:00-+0000
+  maxend 2000-01-31-00:00:00-+0000
+}
diff --git a/TestSuite/Scheduler/Correct/TaskTree.tjp b/TestSuite/Scheduler/Correct/TaskTree.tjp
new file mode 100644 (file)
index 0000000..3a781a9
--- /dev/null
@@ -0,0 +1,35 @@
+project simple "Simple Project" "$Id" 2000-01-01-0:00-GMT 2000-01-31-0:00-GMT {
+       timezone "GMT"
+}
+
+task t1 "Task1" {
+  start 2000-01-01
+  length 10d
+}
+
+task m1 "Milestone1" {
+       depends !t1
+       milestone
+}
+
+task t2 "Task2" {
+  preceeds !m1
+  length 5d
+}
+
+task t3 "Task3" {
+  depends !m1
+       length 5d
+}
+
+htmltaskreport "TaskTree.html" {
+       columns name, start, end, daily
+}
+
+export "TaskTree-Export.tjsp" {
+       hidetask 0
+       hideresource 0
+       taskattributes flags, note, minstart, maxstart, minend, maxend,
+       complete, responsible, depends
+}
+
diff --git a/TestSuite/Scheduler/Errors/Runaway1.tjp b/TestSuite/Scheduler/Errors/Runaway1.tjp
new file mode 100644 (file)
index 0000000..ac306db
--- /dev/null
@@ -0,0 +1,21 @@
+project test "test" "$Id" 2000-01-01 2000-01-31
+
+task t1 "Task1" {
+       start 2000-01-01
+       length 5d
+}
+
+task t2 "Task2" {
+  start 2000-01-01
+       length 60d
+}
+
+task t3 "Task3" {
+       start 2000-01-01
+       length 10d
+}
+
+htmltaskreport "Runaway1.html" {
+       columns name, start, end, daily
+}
+
diff --git a/TestSuite/Scheduler/Errors/Runaway2.tjp b/TestSuite/Scheduler/Errors/Runaway2.tjp
new file mode 100644 (file)
index 0000000..ff477d5
--- /dev/null
@@ -0,0 +1,28 @@
+project test "test" "$Id" 2000-01-01 2000-01-31
+
+task t1 "Task1" {
+       start 2000-01-01
+       length 5d
+}
+
+task t2 "Task2" {
+       task sub "Sub" {
+               start 2000-01-01
+               length 60d
+       }
+}
+
+task t3 "Task3" {
+       start 2000-01-01
+       length 10d
+}
+
+task t4 "Task4" {
+       depends !t2.sub
+       length 2d
+}
+
+htmltaskreport "Runaway2.html" {
+       columns name, start, end, daily
+}
+
diff --git a/TestSuite/Scheduler/Errors/Runaway3.tjp b/TestSuite/Scheduler/Errors/Runaway3.tjp
new file mode 100644 (file)
index 0000000..213c634
--- /dev/null
@@ -0,0 +1,24 @@
+project test "test" "$Id" 2000-01-01 2000-01-31
+
+task t1 "Task1" {
+       end 2000-01-31
+       scheduling alap
+       length 5d
+}
+
+task t2 "Task2" {
+  end 2000-01-31
+       scheduling alap
+       length 60d
+}
+
+task t3 "Task3" {
+       end 2000-01-31
+       scheduling alap
+       length 10d
+}
+
+htmltaskreport "Runaway3.html" {
+       columns name, start, end, daily
+}
+
index a5e24a9..6b1919f 100644 (file)
@@ -356,6 +356,10 @@ linkend="include_taskprefix">taskprefix</link> has been added to <link
 linkend="include">include</link>. This allows exported projects to be
 added at arbitrary points in the task tree.</para></listitem>
 
+<listitem><para>Include statements within tasks are no longer
+supported. They caused in ambiguous interpretation of
+'flags'.</para></listitem>
+
 <listitem><para>The optional attribute <link
 linkend="export_taskroot">taskroot</link> has been added to <link
 linkend="export">export</link>. This allows to export sub tasks of a
@@ -390,6 +394,10 @@ might have to fix your project now. Such cases would have resulted in
 wrong results anyhow. Lots of test cases have been added to the test
 suite to check the checker.</para></listitem>
 
+<listitem><para>The error reporting has been drastically improved. The
+messages should be more precise now and errors that are triggered by
+other errors should be not so promiment anymore.</para></listitem>
+
 </itemizedlist> </para>
 
 </sect2>
index cc9567f..971e5f6 100644 (file)
@@ -248,10 +248,14 @@ Project::schedule()
        bool done = FALSE;
        time_t day;
 
+       /* Find all tasks than have enough information to be scheduled and sort
+        * them into two lists; one list for all ASAP tasks and one list for all
+        * ALAP tasks. */
        updateActiveTaskList(sortedTasks);
-       for (day = start; !(activeAsap.isEmpty() && activeAlap.isEmpty()) &&
-                day >= start && day < end; day += timeDelta)
+       for (day = start; !(activeAsap.isEmpty() && activeAlap.isEmpty()); )
        {
+               if (debugLevel > 5)
+                       qDebug("Scheduling slot %s", time2ISO(day).latin1());
                timeDelta = scheduleGranularity;
                do
                {
@@ -264,41 +268,76 @@ Project::schedule()
                                        break;  // Start with top priority tasks again.
                                }
                                if (t->needsEarlierTimeSlot(day + scheduleGranularity))
+                               {
+                                       if (debugLevel > 5)
+                                               qDebug("Scheduling backwards now");
                                        timeDelta = -scheduleGranularity;
+                               }
                        }
                } while (!done);
 
-               if (timeDelta < 0)
-                       continue;
-               uint i = 0;
-               do
+               if (timeDelta >= 0)
                {
-                       done = TRUE;
-                       i = 0;
-                       for (Task* t = activeAsap.first(); t != 0; t = activeAsap.next())
+                       do
                        {
-                               i++;
-                               if (!t->schedule(day, scheduleGranularity))
+                               done = TRUE;
+                               for (Task* t = activeAsap.first(); t != 0;
+                                        t = activeAsap.next())
                                {
-                                       done = FALSE;
-                                       break;  // Start with top priority tasks again.
+                                       if (!t->schedule(day, scheduleGranularity))
+                                       {
+                                               done = FALSE;
+                                               break;  // Start with top priority tasks again.
+                                       }
                                }
-                       }
-               } while (!done);
-               if (i != activeAsap.count())
-                       qFatal("activeAsap list corrupted");
+                       } while (!done);
+               }
+               day += timeDelta;
+       
+               /* Runaway detection */
+               if (day < start)
+               {
+                       if (debugLevel > 2)
+                               qDebug("Scheduler ran over start of project");
+                       
+                       for (Task* t = activeAlap.first(); t != 0; t = activeAlap.next())
+                               if (t->setRunaway(day - timeDelta, scheduleGranularity))
+                               {
+                                       if (debugLevel > 2)
+                                               qDebug("Marking task %s as runaway",
+                                                          t->getId().latin1());
+                                       error = TRUE;
+                               }
+                       day = start;
+               }
+               if (day >= end)
+               {
+                       if (debugLevel > 2)
+                               qDebug("Scheduler ran over end of project");
+                       
+                       for (Task* t = activeAsap.first(); t != 0; t = activeAsap.next())
+                               if (t->setRunaway(day - timeDelta, scheduleGranularity))
+                               {
+                                       if (debugLevel > 2)
+                                               qDebug("Marking task %s as runaway",
+                                                          t->getId().latin1());
+                                       error = TRUE;
+                               }
+                       day = end - scheduleGranularity;
+               }
        }
 
-       if (!activeAsap.isEmpty() || !activeAlap.isEmpty())
-       {
-               for (Task* t = activeAsap.first(); t != 0; t = activeAsap.next())
-                       qWarning("Task %s does not fit into the project time frame",
-                                        t->getId().latin1());
-               for (Task* t = activeAlap.first(); t != 0; t = activeAlap.next())
-                       qWarning("Task %s does not fit into the project time frame",
-                                        t->getId().latin1());
-               error = TRUE;
-       }
+       if (error)
+               for (Task* t = sortedTasks.first(); t; t = sortedTasks.next())
+                       if (t->isRunaway())
+                               if (t->getScheduling() == Task::ASAP)
+                                       t->fatalError(QString(
+                                               "End of task %1 does not fit into the project time "
+                                               "frame.").arg(t->getId()));
+                               else
+                                       t->fatalError(QString(
+                                               "Start of task %1 does not fit into the project time "
+                                               "frame.").arg(t->getId()));
 
        if (!checkSchedule())
                error = TRUE;
index dad8b01..f7b2b36 100644 (file)
 (token == a) \
 { \
        if ((tt = nextToken(token)) == DATE) \
+       { \
+               if (date2time(token) < proj->getStart() || \
+                       date2time(token) > proj->getEnd()) \
+               { \
+                       fatalError("Date is outside of project time frame"); \
+                       return FALSE; \
+               } \
                task->b(date2time(token)); \
+       } \
        else \
        { \
                fatalError("Date expected"); \
@@ -1590,8 +1598,12 @@ ProjectFile::readTaskBody(Task* task)
                        }       
                        else if (token == KW("include"))
                        {
-                               if (!readInclude())
-                                       return FALSE;
+                               fatalError("The 'include' attribute is no longer supported "
+                                                  "within tasks since it caused ambiguoties between "
+                                                  "flag declaration and flag attributes. Please use "
+                                                  "the 'taskprefix' attribute of 'include' ouside "
+                                                  "of tasks instead.");
+                               return FALSE;
                        }
                        else
                        {
index 04b68c3..1bbd91d 100644 (file)
@@ -569,6 +569,53 @@ Task::propagateInitialValues()
 }
 
 bool
+Task::setRunaway(time_t date, int slotDuration)
+{
+       /* Only mark tasks that have been scheduled in the last timeslot */
+       if (scheduling == ASAP)
+       {       
+               if (debugLevel > 4)
+                       qDebug("Task %s: lastSlot: %s, date + slotDuration - 1: %s",
+                                  id.latin1(),
+                                  time2ISO(lastSlot).latin1(),
+                                  time2ISO(date + slotDuration - 1).latin1());
+               if (lastSlot == 0 || lastSlot > date + slotDuration - 1)
+                       return FALSE;
+       }
+       else
+       {
+               if (debugLevel > 4)
+                       qDebug("Task %s: lastSlot: %s, date: %s", id.latin1(),
+                                  time2ISO(lastSlot).latin1(),
+                                  time2ISO(date).latin1());
+               if (lastSlot == 0 || lastSlot > date)
+                       return FALSE;
+       }
+
+       project->removeActiveTask(this);
+       runAway = TRUE;
+       if (scheduling == ASAP)
+               end = maxEnd + 1;
+       else
+               start = minStart - 1;
+
+       return TRUE;
+}
+
+bool
+Task::isRunaway()
+{
+       /* If a container task has runaway sub tasts, it is very likely that they
+        * are the culprits. So we don't report such a container task as runaway.
+        */
+       for (Task* t = subFirst(); t; t = subNext())
+               if (t->isRunaway())
+                       return FALSE;
+       
+       return runAway;
+}
+
+bool
 Task::bookResources(time_t date, time_t slotDuration)
 {
        bool allocFound = FALSE;
@@ -1372,6 +1419,18 @@ Task::preScheduleOk()
 bool
 Task::scheduleOk()
 {
+       if (runAway)
+               return FALSE;
+       
+       /* If any of the tasks is a runAway, we can safely surpress all other
+        * error messages. */
+       for (Task* t = depends.first(); t; t = depends.next())
+               if (t->runAway)
+                       return FALSE;
+       for (Task* t = preceeds.first(); t; t = preceeds.next())
+               if (t->runAway)
+                       return FALSE;
+
        if (!sub.isEmpty())
        {
                // All sub task must fit into their parent task.
@@ -1379,13 +1438,16 @@ Task::scheduleOk()
                {
                        if (start > t->start)
                        {
-                               fatalError("Task %s starts ealier than parent",
-                                                  t->id.latin1());
+                               if (!t->runAway)
+                                       fatalError("Task %s starts ealier than parent",
+                                                          t->id.latin1());
                                return FALSE;
                        }
                        if (end < t->end)
                        {
-                               fatalError("Task %s ends later than parent", t->id.latin1());
+                               if (!t->runAway)
+                                       fatalError("Task %s ends later than parent",
+                                                          t->id.latin1());
                                return FALSE;
                        }
                }
@@ -1455,7 +1517,7 @@ Task::scheduleOk()
        }
        // Check if all previous tasks end before start of this task.
        for (Task* t = previous.first(); t != 0; t = previous.next())
-               if (t->end > start)
+               if (t->end > start && !t->runAway)
                {
                        fatalError("Impossible dependency:\n"
                                           "Task %s ends at %s but needs to preceed\n"
@@ -1466,7 +1528,7 @@ Task::scheduleOk()
                }
        // Check if all following task start after this tasks end.
        for (Task* t = followers.first(); t != 0; t = followers.next())
-               if (end > t->start)
+               if (end > t->start && !t->runAway)
                {
                        fatalError("Impossible dependency:\n"
                                           "Task %s starts at %s but needs to follow\n"
@@ -1545,6 +1607,7 @@ Task::preparePlan()
        effort = planEffort;
        lastSlot = 0;
        schedulingDone = FALSE;
+       runAway = FALSE;
        bookedResources.clear();
        bookedResources = planBookedResources;
 
@@ -1582,6 +1645,7 @@ Task::prepareActual()
        effort = actualEffort;
        lastSlot = 0;
        schedulingDone = FALSE;
+       runAway = FALSE;
        bookedResources.clear();
        bookedResources = actualBookedResources;
 }
index 39a6ea3..a541e24 100644 (file)
@@ -277,6 +277,8 @@ public:
        void propagateStart(bool safeMode = TRUE);
        void propagateEnd(bool safeMode = TRUE);
        void propagateInitialValues();
+       bool setRunaway(time_t date, int slotDuration);
+       bool isRunaway();
 
        /**
         * @returns TRUE if the work planned for a day has been completed.
@@ -309,6 +311,8 @@ public:
 
        bool isSubTask(Task* t);
 
+       void fatalError(const char* msg, ...) const;
+
        void preparePlan();
        void finishPlan();
 
@@ -350,7 +354,6 @@ private:
        bool hasPlanEndDependency();
        bool hasActualStartDependency();
        bool hasActualEndDependency();
-       void fatalError(const char* msg, ...) const;
 
        /// A longer description of the task.
        QString note;
@@ -568,6 +571,10 @@ private:
        /// This variable is set to true when the task has been scheduled.
        bool schedulingDone;
 
+       /** This flag is set when the task does not fit into the project time
+        * frame. */
+       bool runAway;
+
        /// A list of all the resources booked for this task.
        QPtrList<Resource> bookedResources;