1package com.xtremelabs.robolectric.shadows;
2
3import android.text.Editable;
4import android.text.SpannableStringBuilder;
5import com.xtremelabs.robolectric.internal.Implementation;
6import com.xtremelabs.robolectric.internal.Implements;
7import com.xtremelabs.robolectric.internal.RealObject;
8
9/**
10 * Shadow of {@code SpannableStringBuilder} implemented using a regular {@code StringBuilder}
11 */
12@SuppressWarnings({"UnusedDeclaration"})
13@Implements(SpannableStringBuilder.class)
14public class ShadowSpannableStringBuilder implements CharSequence {
15    @RealObject private SpannableStringBuilder realSpannableStringBuilder;
16
17    private StringBuilder builder = new StringBuilder();
18
19    public void __constructor__(CharSequence text) {
20        builder.append(text);
21    }
22
23    @Implementation
24    public SpannableStringBuilder append(char text) {
25        builder.append(text);
26        return realSpannableStringBuilder;
27    }
28
29    @Implementation
30    public Editable replace(int st, int en, CharSequence text) {
31        builder.replace(st, en, text.toString());
32        return realSpannableStringBuilder;
33    }
34
35    @Implementation
36    public Editable insert(int where, CharSequence text) {
37        builder.insert(where, text.toString());
38        return realSpannableStringBuilder;
39    }
40
41    @Implementation
42    public SpannableStringBuilder append(CharSequence text) {
43        builder.append(text.toString());
44        return realSpannableStringBuilder;
45    }
46
47    @Implementation
48    @Override public int length() {
49        return builder.length();
50    }
51
52    @Implementation
53    @Override public char charAt(int index) {
54        return builder.charAt(index);
55    }
56
57    @Implementation
58    @Override public CharSequence subSequence(int start, int end) {
59        return builder.subSequence(start, end);
60    }
61
62    @Implementation
63    public String toString() {
64        return builder.toString();
65    }
66
67    @Implementation
68    public SpannableStringBuilder delete( int start, int end ) {
69    	builder.delete( start, end );
70        return realSpannableStringBuilder;
71    }
72}
73