# artemkorsakov's solution

## to Space Age in the Java Track

Published at Jan 29 2019 · 0 comments
Instructions
Test suite
Solution

#### Note:

This exercise has changed since this solution was written.

Given an age in seconds, calculate how old someone would be on:

• Earth: orbital period 365.25 Earth days, or 31557600 seconds
• Mercury: orbital period 0.2408467 Earth years
• Venus: orbital period 0.61519726 Earth years
• Mars: orbital period 1.8808158 Earth years
• Jupiter: orbital period 11.862615 Earth years
• Saturn: orbital period 29.447498 Earth years
• Uranus: orbital period 84.016846 Earth years
• Neptune: orbital period 164.79132 Earth years

So if you were told someone were 1,000,000,000 seconds old, you should be able to say that they're 31.69 Earth-years old.

If you're wondering why Pluto didn't make the cut, go watch this youtube video.

# Running the tests

You can run all the tests for an exercise by entering

``````\$ gradle test
``````

## Source

Partially inspired by Chapter 1 in Chris Pine's online Learn to Program tutorial. http://pine.fm/LearnToProgram/?Chapter=01

## Submitting Incomplete Solutions

It's possible to submit an incomplete solution so you can see how others have completed the exercise.

### SpaceAgeTest.java

``````import org.junit.Test;
import org.junit.Ignore;

import static org.junit.Assert.assertEquals;

public class SpaceAgeTest {

private static final double MAXIMUM_DELTA = 1E-02;

@Test
public void ageOnEarth() {
SpaceAge age = new SpaceAge(1000000000);

assertEquals(31.69, age.onEarth(), MAXIMUM_DELTA);
}

@Ignore("Remove to run test")
@Test
public void ageOnMercury() {
SpaceAge age = new SpaceAge(2134835688);

assertEquals(280.88, age.onMercury(), MAXIMUM_DELTA);
}

@Ignore("Remove to run test")
@Test
public void ageOnVenus() {
SpaceAge age = new SpaceAge(189839836);

assertEquals(9.78, age.onVenus(), MAXIMUM_DELTA);
}

@Ignore("Remove to run test")
@Test
public void ageOnMars() {
SpaceAge age = new SpaceAge(2329871239L);

assertEquals(39.25, age.onMars(), MAXIMUM_DELTA);
}

@Ignore("Remove to run test")
@Test
public void ageOnJupiter() {
SpaceAge age = new SpaceAge(901876382);

assertEquals(2.41, age.onJupiter(), MAXIMUM_DELTA);
}

@Ignore("Remove to run test")
@Test
public void ageOnSaturn() {
SpaceAge age = new SpaceAge(3000000000L);

assertEquals(3.23, age.onSaturn(), MAXIMUM_DELTA);
}

@Ignore("Remove to run test")
@Test
public void ageOnUranus() {
SpaceAge age = new SpaceAge(3210123456L);

assertEquals(1.21, age.onUranus(), MAXIMUM_DELTA);
}

@Ignore("Remove to run test")
@Test
public void ageOnNeptune() {
SpaceAge age = new SpaceAge(8210123456L);

assertEquals(1.58, age.onNeptune(), MAXIMUM_DELTA);
}
}``````
``````class SpaceAge {
private double seconds;

SpaceAge(double seconds) {
this.seconds = seconds;
}

double getSeconds() {
return seconds;
}

double onEarth() {
return seconds / 31557600;
}

double onMercury() {
return onEarth() / 0.2408467;
}

double onVenus() {
return onEarth() / 0.61519726;
}

double onMars() {
return onEarth() / 1.8808158;
}

double onJupiter() {
return onEarth() / 11.862615;
}

double onSaturn() {
return onEarth() / 29.447498;
}

double onUranus() {
return onEarth() / 84.016846;
}

double onNeptune() {
return onEarth() / 164.79132;
}

}``````