JeffGrigg icon

Untitled

JeffGrigg | PRO | 01/23/23 09:17:19 PM UTC | 0 ⭐ | 13838 👁️ | Never ⏰ | []
Java 5 |

0 B

|

Source Code

|

0 👍

/

0 👎

import junit.framework.TestCase;
import static java.lang.Math.*;
 
/**
 * Inspired by twitter post https://twitter.com/allenholub/status/1617619350080598016
 */
public class StaticMethodTest extends TestCase {
 
    private static String getPercentageRounds(final double percentage) {
        return getPercentageRounds_JeffGrigg(percentage);
//        return getPercentageRounds_AllenHolub(percentage);
//        return getPercentageRounds_Mix(percentage);
    }
 
    private static String getPercentageRounds_JeffGrigg(final double percentage) {
        final var blueCircles = max(min((int) ceil(percentage * 10), 10), 0);
        final var emptyCircles = 10 - blueCircles;
        return "🔵".repeat(blueCircles) + "⚪".repeat(emptyCircles);
    }
 
    private static String getPercentageRounds_AllenHolub(final double percentage) {
        assert 0.0 <= percentage && percentage <= 1.0;
        final String[] dots = new String[]{
                "⚪⚪⚪⚪⚪⚪⚪⚪⚪⚪",
                "🔵⚪⚪⚪⚪⚪⚪⚪⚪⚪",
                "🔵🔵⚪⚪⚪⚪⚪⚪⚪⚪",
                "🔵🔵🔵⚪⚪⚪⚪⚪⚪⚪",
                "🔵🔵🔵🔵⚪⚪⚪⚪⚪⚪",
                "🔵🔵🔵🔵🔵⚪⚪⚪⚪⚪",
                "🔵🔵🔵🔵🔵🔵⚪⚪⚪⚪",
                "🔵🔵🔵🔵🔵🔵🔵⚪⚪⚪",
                "🔵🔵🔵🔵🔵🔵🔵🔵⚪⚪",
                "🔵🔵🔵🔵🔵🔵🔵🔵🔵⚪",
                "🔵🔵🔵🔵🔵🔵🔵🔵🔵🔵"
        };
        final var percentageAsIntBetween0And10 = (int) (percentage * 10);
        return dots[percentageAsIntBetween0And10];
    }
 
    private static String getPercentageRounds_Mix(final double percentage) {
        final String[] dots = new String[]{
                "⚪⚪⚪⚪⚪⚪⚪⚪⚪⚪",
                "🔵⚪⚪⚪⚪⚪⚪⚪⚪⚪",
                "🔵🔵⚪⚪⚪⚪⚪⚪⚪⚪",
                "🔵🔵🔵⚪⚪⚪⚪⚪⚪⚪",
                "🔵🔵🔵🔵⚪⚪⚪⚪⚪⚪",
                "🔵🔵🔵🔵🔵⚪⚪⚪⚪⚪",
                "🔵🔵🔵🔵🔵🔵⚪⚪⚪⚪",
                "🔵🔵🔵🔵🔵🔵🔵⚪⚪⚪",
                "🔵🔵🔵🔵🔵🔵🔵🔵⚪⚪",
                "🔵🔵🔵🔵🔵🔵🔵🔵🔵⚪",
                "🔵🔵🔵🔵🔵🔵🔵🔵🔵🔵"
        };
        final var percentageAsIntBetween0And10 = max(min((int) ceil(percentage * 10), 10), 0);
        return dots[percentageAsIntBetween0And10];
    }
 
    public void testZero() {
        assertEquals("⚪⚪⚪⚪⚪⚪⚪⚪⚪⚪", getPercentageRounds(0.00));
    }
 
    public void testJustOverZero() {
        assertEquals("🔵⚪⚪⚪⚪⚪⚪⚪⚪⚪", getPercentageRounds(0.00001));
    }
 
    public void test10Percent() {
        assertEquals("🔵⚪⚪⚪⚪⚪⚪⚪⚪⚪", getPercentageRounds(0.10));
    }
 
    public void testJustOver10Percent() {
        assertEquals("🔵🔵⚪⚪⚪⚪⚪⚪⚪⚪", getPercentageRounds(0.100001));
    }
 
    public void test20Percent() {
        assertEquals("🔵🔵⚪⚪⚪⚪⚪⚪⚪⚪", getPercentageRounds(0.20));
    }
 
    public void testJustOver20Percent() {
        assertEquals("🔵🔵🔵⚪⚪⚪⚪⚪⚪⚪", getPercentageRounds(0.200001));
    }
 
    public void test30Percent() {
        assertEquals("🔵🔵🔵⚪⚪⚪⚪⚪⚪⚪", getPercentageRounds(0.30));
    }
 
    public void testJustOver30Percent() {
        assertEquals("🔵🔵🔵🔵⚪⚪⚪⚪⚪⚪", getPercentageRounds(0.300001));
    }
 
    public void test40Percent() {
        assertEquals("🔵🔵🔵🔵⚪⚪⚪⚪⚪⚪", getPercentageRounds(0.40));
    }
 
    public void testJustOver40Percent() {
        assertEquals("🔵🔵🔵🔵🔵⚪⚪⚪⚪⚪", getPercentageRounds(0.400001));
    }
 
    public void test50Percent() {
        assertEquals("🔵🔵🔵🔵🔵⚪⚪⚪⚪⚪", getPercentageRounds(0.50));
    }
 
    public void testJustOver50Percent() {
        assertEquals("🔵🔵🔵🔵🔵🔵⚪⚪⚪⚪", getPercentageRounds(0.500001));
    }
 
    public void test60Percent() {
        assertEquals("🔵🔵🔵🔵🔵🔵⚪⚪⚪⚪", getPercentageRounds(0.60));
    }
 
    public void testJustOver60Percent() {
        assertEquals("🔵🔵🔵🔵🔵🔵🔵⚪⚪⚪", getPercentageRounds(0.600001));
    }
 
    public void test70Percent() {
        assertEquals("🔵🔵🔵🔵🔵🔵🔵⚪⚪⚪", getPercentageRounds(0.70));
    }
 
    public void testJustOver70Percent() {
        assertEquals("🔵🔵🔵🔵🔵🔵🔵🔵⚪⚪", getPercentageRounds(0.700001));
    }
 
    public void test80Percent() {
        assertEquals("🔵🔵🔵🔵🔵🔵🔵🔵⚪⚪", getPercentageRounds(0.80));
    }
 
    public void testJustOver80Percent() {
        assertEquals("🔵🔵🔵🔵🔵🔵🔵🔵🔵⚪", getPercentageRounds(0.800001));
    }
 
    public void test90Percent() {
        assertEquals("🔵🔵🔵🔵🔵🔵🔵🔵🔵⚪", getPercentageRounds(0.90));
    }
 
    public void testJustOver90Percent() {
        assertEquals("🔵🔵🔵🔵🔵🔵🔵🔵🔵🔵", getPercentageRounds(0.900001));
    }
 
    public void testAlmost100Percent() {
        assertEquals("🔵🔵🔵🔵🔵🔵🔵🔵🔵🔵", getPercentageRounds(0.999999));
    }
 
    public void test100Percent() {
        assertEquals("🔵🔵🔵🔵🔵🔵🔵🔵🔵🔵", getPercentageRounds(1.00));
    }
 
    public void testJustOver100Percent() {
        assertEquals("🔵🔵🔵🔵🔵🔵🔵🔵🔵🔵", getPercentageRounds(1.0000001));
    }
 
    public void test200Percent() {
        assertEquals("🔵🔵🔵🔵🔵🔵🔵🔵🔵🔵", getPercentageRounds(2.00));
    }
 
    public void testCrazyLargePercentage() {
        assertEquals("🔵🔵🔵🔵🔵🔵🔵🔵🔵🔵", getPercentageRounds(999999.999999));
    }
 
    public void testMaxIntegerValue() {
        assertEquals("🔵🔵🔵🔵🔵🔵🔵🔵🔵🔵", getPercentageRounds(Integer.MAX_VALUE));
    }
 
    public void testJustBelowZero() {
        assertEquals("⚪⚪⚪⚪⚪⚪⚪⚪⚪⚪", getPercentageRounds(-0.0000001));
    }
 
    public void testNegative10Percent() {
        assertEquals("⚪⚪⚪⚪⚪⚪⚪⚪⚪⚪", getPercentageRounds(-0.10));
    }
 
    public void testNegative20Percent() {
        assertEquals("⚪⚪⚪⚪⚪⚪⚪⚪⚪⚪", getPercentageRounds(-0.20));
    }
 
    public void testCrazyLargeNegativePercentage() {
        assertEquals("⚪⚪⚪⚪⚪⚪⚪⚪⚪⚪", getPercentageRounds(-999999.999999));
    }
 
    public void testMinIntegerValue() {
        assertEquals("⚪⚪⚪⚪⚪⚪⚪⚪⚪⚪", getPercentageRounds(Integer.MIN_VALUE));
    }
 
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎