Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

JavaScript

Seth Missiaen
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Seth Missiaen
Web Development Techdegree Graduate 21,652 Points

Test possible outputs?

Is it possible to run parts of your code in an environment that will output all possible results? This could be a really convenient way to test more complex math. For example, consider the following code from the random number generator challenge:

// Collect input from a user
let usertop = prompt("Choose a top number");
let userbottom = prompt("Choose a bottom number");

// Convert the input to a number
usertop = parseInt(usertop);
userbottom = parseInt(userbottom);

if (usertop && userbottom) {  
// Use Math.random() and the user's number to generate a random number
  const userNumber = Math.floor(Math.random() * (usertop - userbottom + 1)) + userbottom;

  // Create a message displaying the random number
  console.log(`Your random number from ${userbottom} to ${usertop} is ${userNumber}!`);
} else {
  console.log('You need to provide two numbers');
}

Is there a way to run the output of this line and see all possible results?

console.log(`Your random number from ${userbottom} to ${usertop} is ${userNumber}!`);

I understand that in most cases this would likely render way too many results, but to test your code you could set the parameters to a small range (e.g. 5 low and 8 high) and hopefully see 5, 6, 7, and 8 as results.

Thanks so much!

Caleb Kemp
Caleb Kemp
12,755 Points

Perhaps that could be accomplished with a for loop? Something like

console.log("The possible results are");
for(let i = userbottom; i <= usertop; i++)
{
    console.log(", " + i );
}

Not sure if that's what you're looking for

1 Answer

Steven Parker
Steven Parker
231,248 Points

The unpredictability of the random function would make it difficult to test thoroughly without repeating the process a very large number of times and doing some statistical analysis on the output (I've had to do this on occasion!).

But for most purposes it might be sufficient to temporarily replace the random value with the lowest possible value (0) and then run again with the highest possible value (0.999999....) to check that the results fall within the expected range.

Seth Missiaen
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Seth Missiaen
Web Development Techdegree Graduate 21,652 Points

This was quite helpful. I didn't think of simply changing the Math.random() function to it's highest and lowest parameters to test. Thanks for the advice.

This solution provided by Caleb Kemp did render the result I was looking for:

console.log("The possible results are");
for(let i = userbottom; i <= usertop; i++)
{
    console.log(", " + i );
}

Thanks guys!

Caleb Kemp
Caleb Kemp
12,755 Points

Glad to hear it helped :grinning: