package com.android.node;

import android.R;
import android.view.inspector.InspectionCompanion;
import android.view.inspector.IntEnumMapping;
import android.view.inspector.PropertyMapper;
import android.view.inspector.PropertyReader;
import java.lang.Override;

/**
 * Inspection companion for {@link TestNode}.
 *
 * Generated by {@link android.processor.view.inspector.InspectionCompanionGenerator}
 * on behalf of {@link android.processor.view.inspector.InspectionCompanionGeneratorTest}.
 */
public final class TestNode$InspectionCompanion implements InspectionCompanion<TestNode> {
    /**
     * Set by {@link #mapProperties(PropertyMapper)} once properties have been mapped.
     */
    private boolean mPropertiesMapped = false;

    /**
     * Property ID of {@code intEnumProperty}.
     */
    private int mIntEnumPropertyId;

    @Override
    public void mapProperties(PropertyMapper propertyMapper) {
        mIntEnumPropertyId = propertyMapper.mapIntEnum("intEnumProperty", R.attr.intEnumProperty,
                new IntEnumMapping.Builder()
                    .addValue("ONE", 1)
                    .addValue("TWO", 2)
                    .addValue("THREE", 3)
                    .build());
        mPropertiesMapped = true;
    }

    @Override
    public void readProperties(TestNode node, PropertyReader propertyReader) {
        if (!mPropertiesMapped) {
            throw new InspectionCompanion.UninitializedPropertyMapException();
        }
        propertyReader.readIntEnum(mIntEnumPropertyId, node.getIntEnumProperty());
    }
}
