< Summary

Information
Class: Utility.Components.Base64.Base64
Assembly: Utility
File(s): /home/runner/work/Utility-Blazor/Utility-Blazor/src/Utility/Components/Base64/Base64.razor
Tag: 231_14069517506
Line coverage
75%
Covered lines: 18
Uncovered lines: 6
Coverable lines: 24
Total lines: 92
Line coverage: 75%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Input()100%11100%
get_Output()100%11100%
Encode()100%22100%
Decode()100%22100%
Clear()100%210%
Copy()100%210%
Base64Encode(...)100%11100%
Base64Decode(...)100%11100%

File(s)

/home/runner/work/Utility-Blazor/Utility-Blazor/src/Utility/Components/Base64/Base64.razor

#LineLine coverage
 1@using System.Text
 2@inject IJSRuntime JSRuntime
 3
 4<div class="container">
 5    <div class="row">
 6        <div class="col">
 7            <h2>Base64 Encode/Decode</h2>
 8        </div>
 9    </div>
 10    <div class="row">
 11        <div class="col">
 12            <div class="input-group">
 13                <textarea id="binary" class="form-control" rows="5" @bind="Input" placeholder="Base64"></textarea>
 14                <span class="input-group-btn">
 15                    <button id="btnDecode" name="btnDecode" class="btn btn-success" @onclick="Decode"><i class="fas fa-a
 16                    <button id="btnClear" name="btnClear" class="btn btn-danger float-right" @onclick="Clear"><i class="
 17                </span>
 18            </div>
 19        </div>
 20    </div>
 21
 22    <div class="row">
 23        <div class="col">
 24            <div class="input-group">
 25                <textarea id="output" class="form-control" rows="5" @bind="Output" placeholder="String"></textarea>
 26                <span class="input-group-btn">
 27                    <button id="btnEncode" name="btnEncode" class="btn btn-success" @onclick="Encode"><i class="fas fa-a
 28                    @* <button id="btnClear" name="btnClear" class="btn btn-danger float-right" @onclick="Clear"><i clas
 29                    <button id="btnCopy" name="btnCopy" class="btn btn-info float-right" @onclick="Copy"><i class="far f
 30                </span>
 31            </div>
 32        </div>
 33    </div>
 34
 35    <div class="row">
 36        <div class="col">
 37            <p>Inspired from <a href="https://www.base64encode.org" target="_blank">base64encode</a></p>
 38            <p>Inspired from <a href="https://www.base64decode.org" target="_blank">base64decode</a></p>
 39        </div>
 40    </div>
 41
 42</div>
 43
 44@code {
 45    [Parameter]
 2846    public string? Input { get; set; }
 47
 48    [Parameter]
 2849    public string? Output { get; set; }
 50
 51    // protected override void OnInitialized()
 52    // {
 53    //     Input = "QWxleEhlZGxleQ=="; // How self important //string.Empty;
 54    //     Output = string.Empty;
 55    // }
 56
 57    void Encode()
 258    {
 359        if (string.IsNullOrEmpty(Output)) return;
 160        Input = Base64Encode(Output);
 261    }
 62
 63    void Decode()
 264    {
 365        if (string.IsNullOrEmpty(Input)) return;
 166        Output = Base64Decode(Input);
 267    }
 68
 69    private void Clear()
 070    {
 071        Input = string.Empty;
 072    }
 73
 74    async Task Copy()
 075    {
 076        await JSRuntime.InvokeVoidAsync("navigator.clipboard.writeText", Output);
 077    }
 78
 79    // https://stackoverflow.com/a/11743162/2895831
 80
 81    public static string Base64Encode(string plainText)
 182    {
 183        var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
 184        return System.Convert.ToBase64String(plainTextBytes);
 185    }
 86
 87    public static string Base64Decode(string base64EncodedData)
 188    {
 189        var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
 190        return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
 191    }
 92}