/// <summary> /// Produce <see cref="DeviceStatusFlags"/> containing updated <see cref="SaveMenuPositionFlags"/> for a given <see cref="Device"/>. /// </summary> /// <param name="device">The <see cref="Device"/> whose updated flags are desired.</param> /// <param name="newSaveMenuPositionFlags">New <see cref="SaveMenuPositionFlags"/> to apply to <paramref name="device"/>.</param> /// <returns>A new set of <see cref="DeviceStatusFlags"/> with updated SaveMenuPositionFlags for <paramref name="device"/>.</returns> internal static DeviceStatusFlags UpdateStatusFlags(this Device device, SaveMenuPositionFlags newSaveMenuPositionFlags) { var deviceStatusFlags = device.DeviceStatusFlags & ~DeviceStatusFlags.SaveMenuPositionMask; deviceStatusFlags |= newSaveMenuPositionFlags.ToDeviceStatusFlagsLo(); return(deviceStatusFlags); }
/// <summary> /// Converts <see cref="SaveMenuPositionFlags"/> into a display string. /// </summary> /// <param name="saveMenuPosition">The flags to convert.</param> /// <returns>A display string for the value.</returns> internal static string ToDisplayString(this SaveMenuPositionFlags saveMenuPosition) { return(ModeToStringsTable[saveMenuPosition]); }
/// <summary> /// Places save menu position flags into the more generic <see cref="DeviceStatusFlagsLo"/> bit array. /// </summary> /// <param name="saveMenuPosition">The <see cref="SaveMenuPositionFlags"/> to convert.</param> /// <returns>The flags placed in a <see cref="DeviceStatusFlagsLo"/> bit array.</returns> internal static DeviceStatusFlagsLo ToDeviceStatusFlagsLo(this SaveMenuPositionFlags saveMenuPosition) { var deviceStatusFlags = (DeviceStatusFlagsLo)((ulong)saveMenuPosition << DeviceStatusFlagsLoHelpers.SaveMenuPositionBitsOffset); return(deviceStatusFlags); }
public void DeviceStatusFlagsLo_ToSaveMenuPositionFlags_ReturnsExpectedFlags(DeviceStatusFlagsLo statusFlagsLo, SaveMenuPositionFlags expectedSaveMenuPositionFlags) { var actualSaveMenuPositionFlags = statusFlagsLo.ToSaveMenuPositionFlags(); // NOTE: Implementation coerces 'reserved' to during session only'. Replicate this here. if (expectedSaveMenuPositionFlags == SaveMenuPositionFlags.Reserved) { expectedSaveMenuPositionFlags = SaveMenuPositionFlags.DuringSessionOnly; } Assert.Equal(expectedSaveMenuPositionFlags, actualSaveMenuPositionFlags); }