Build/Test Issues

Rdi Not working for me

Started by vikram on 1,108 views

I am conducting a Proof of Concept (POC) to purchase of a license for my organization.

I have created a small POC I am able to traverse backward in rdi overlay not able to traverse forward


using System;
using System.Collections.Generic;

namespace ConsoleApp6
{
// Simple calculator class to add two integers
public class Adder
{
public int Add(int a, int b)
{
return a + b;
}
}
// Production classes: ClassOne ... ClassTen
public class ClassOne
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassOne.One");
Two(trace);
return trace;
}


public void Two(List<string> trace)
{
trace.Add("ClassOne.Two");
Three(trace);
}

public void Three(List<string> trace)
{
trace.Add("ClassOne.Three");
new ClassTwo().One(trace);
}
}

public class ClassTwo
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassTwo.One");
Two(trace);
return trace;
}


public void Two(List<string> trace)
{
trace.Add("ClassTwo.Two");
Three(trace);
}

public void Three(List<string> trace)
{
trace.Add("ClassTwo.Three");
new ClassThree().One(trace);
}
}

public class ClassThree
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassThree.One");
Two(trace);
return trace;
}


public void Two(List<string> trace)
{
trace.Add("ClassThree.Two");
Three(trace);
}

public void Three(List<string> trace)
{
trace.Add("ClassThree.Three");
new ClassFour().One(trace);
}
}

public class ClassFour
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassFour.One");
Two(trace);
return trace;
}


public void Two(List<string> trace)
{
trace.Add("ClassFour.Two");
Three(trace);
}

public void Three(List<string> trace)
{
trace.Add("ClassFour.Three");
new ClassFive().One(trace);
}
}

public class ClassFive
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassFive.One");
Two(trace);
return trace;
}


public void Two(List<string> trace)
{
trace.Add("ClassFive.Two");
Three(trace);
}

public void Three(List<string> trace)
{
trace.Add("ClassFive.Three");
new ClassSix().One(trace);
}
}

public class ClassSix
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassSix.One");
Two(trace);
return trace;
}


public void Two(List<string> trace)
{
trace.Add("ClassSix.Two");
Three(trace);
}

public void Three(List<string> trace)
{
trace.Add("ClassSix.Three");
new ClassSeven().One(trace);
}
}

public class ClassSeven
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassSeven.One");
Two(trace);
return trace;
}


public void Two(List<string> trace)
{
trace.Add("ClassSeven.Two");
Three(trace);
}

public void Three(List<string> trace)
{
trace.Add("ClassSeven.Three");
new ClassEight().One(trace);
}
}

public class ClassEight
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassEight.One");
Two(trace);
return trace;
}


public void Two(List<string> trace)
{
trace.Add("ClassEight.Two");
Three(trace);
}

public void Three(List<string> trace)
{
trace.Add("ClassEight.Three");
new ClassNine().One(trace);
}
}

public class ClassNine
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassNine.One");
Two(trace);
return trace;
}


public void Two(List<string> trace)
{
trace.Add("ClassNine.Two");
Three(trace);
}

public void Three(List<string> trace)
{
trace.Add("ClassNine.Three");
new ClassTen().One(trace);
}
}

public class ClassTen
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassTen.One");
Two(trace);
return trace;
}


public void Two(List<string> trace)
{
trace.Add("ClassTen.Two");
Three(trace);
}

public void Three(List<string> trace)
{
trace.Add("ClassTen.Three");
// End of chain.
}
}

internal class Program
{
static void Main(string[] args)
{
var adder = new Adder();
int result = adder.Add(2, 3);
Console.WriteLine("Result: " + result);


}
}
}


using ConsoleApp6;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections.Generic; // add this

namespace UnitTestProject1
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void ClassOne_Three_AddsExpectedTraceAndCallsClassTwo()
{
// arrange
var trace = new List<string>();
var classOne = new ClassOne();

// act
classOne.Three(trace);

// assert
CollectionAssert.Contains(trace, "ClassOne.Three");
CollectionAssert.Contains(trace, "ClassTwo.One");
CollectionAssert.Contains(trace, "ClassTwo.Two");
CollectionAssert.Contains(trace, "ClassTwo.Three");
}
}
}






Please help regards
Vikram
Hi Vikram,

Thanks for sharing this issue.

Can you confirm which method you are attempting to navigate from, and which one you are trying to navigate into?
What I did :

ran test case ClassOne_Three_AddsExpectedTraceAndCallsClassTwo through ncrunch

What work :
RDI overlay is visible on all the methods of all the classes

Go to calling frame : click open RDI overlay for classSeven method One I can Go to calling frame i.e classSix method three

What doesn’t work :
for classSeven method One I cannot go to method two forward traversal is not working I have attached screen shot as well

Thanks & Best Regards
Vikram
Note that forward traversal works differently to backward traversal.

The backward traversal (i.e. go to calling frame) is via the arrow button at the top of the frame. All forward traversal is done by clicking the embedded arrows next to the methods inside the frame itself. This is because in the call tree there is usually more than one path forward, but only one path backward.

Is there any chance you could send the screen shot through the support contact form?
Thanks got it i was missing embedded arrow


Regards
Vikram

Post a reply

Log in to reply.