Skip to content

Commit e30667d

Browse files
authored
Merge pull request #19 from immersivecognition/DevPika-trial-check-issue
Dev pika trial check issue
2 parents 4ae4e46 + c133c22 commit e30667d

File tree

2 files changed

+66
-5
lines changed

2 files changed

+66
-5
lines changed

Assets/UXF/Scripts/Session.cs

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -618,9 +618,25 @@ Trial GetPrevTrial()
618618
/// </summary>
619619
/// <returns></returns>
620620
Trial GetFirstTrial()
621-
{
622-
var firstBlock = blocks[0];
623-
return firstBlock.trials[0];
621+
{
622+
Block firstBlock;
623+
try
624+
{
625+
firstBlock = blocks[0];
626+
}
627+
catch (ArgumentOutOfRangeException)
628+
{
629+
throw new NoSuchTrialException("There is no first trial because no blocks have been created!");
630+
}
631+
632+
try
633+
{
634+
return firstBlock.trials[0];
635+
}
636+
catch (ArgumentOutOfRangeException)
637+
{
638+
throw new NoSuchTrialException("There is no first trial. No trials exist in the first block.");
639+
}
624640
}
625641

626642
/// <summary>
@@ -629,8 +645,24 @@ Trial GetFirstTrial()
629645
/// <returns></returns>
630646
Trial GetLastTrial()
631647
{
632-
var lastBlock = blocks[blocks.Count - 1];
633-
return lastBlock.trials[lastBlock.trials.Count - 1];
648+
Block lastBlock;
649+
try
650+
{
651+
lastBlock = blocks[0];
652+
}
653+
catch (ArgumentOutOfRangeException)
654+
{
655+
throw new NoSuchTrialException("There is no last trial because no blocks have been created!");
656+
}
657+
658+
try
659+
{
660+
return lastBlock.trials[lastBlock.trials.Count - 1];
661+
}
662+
catch (ArgumentOutOfRangeException)
663+
{
664+
throw new NoSuchTrialException("There is no last trial. No trials exist in the last block.");
665+
}
634666
}
635667

636668
/// <summary>

Assets/UXF/Scripts/Tests/Editor/TestSessionBuilding.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,35 @@ public void SwapTrials()
129129
session.blocks = new List<Block>();
130130

131131
}
132+
133+
[Test]
134+
public void InvalidTrialAccess()
135+
{
136+
Block block = session.CreateBlock();
137+
138+
Assert.Throws<NoSuchTrialException>(
139+
delegate { Trial t = session.FirstTrial; }
140+
);
141+
142+
Assert.Throws<NoSuchTrialException>(
143+
delegate { Trial t = session.LastTrial; }
144+
);
145+
146+
// reset blocks
147+
session.blocks = new List<Block>();
148+
}
149+
150+
[Test]
151+
public void InvalidBlockAccess()
152+
{
153+
Assert.Throws<NoSuchTrialException>(
154+
delegate { Trial t = session.FirstTrial; }
155+
);
156+
157+
Assert.Throws<NoSuchTrialException>(
158+
delegate { Trial t = session.LastTrial; }
159+
);
160+
}
132161

133162
}
134163

0 commit comments

Comments
 (0)